home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / TECHNICA / AUTOCAD / 3824.ZIP / ELF110.ZIP / ELF.DOC < prev    next >
Text File  |  1993-02-21  |  226KB  |  5,026 lines

  1.  
  2.  
  3.  
  4.  
  5.                                          ELF
  6.  
  7.  
  8.                             EXTENDED LISP FUNCTION LIBRARY
  9.                                      for AutoLISP
  10.  
  11.  
  12.                               Version 1.1 Documentation
  13.                                  and Reference Manual
  14.  
  15.                                    February 6, 1993
  16.  
  17.  
  18.  
  19.                                    _______
  20.                               ____|__     |               (R)
  21.                            --|       |    |-------------------
  22.                              |   ____|__  |  Association of
  23.                              |  |       |_|  Shareware
  24.                              |__|   o   |    Professionals
  25.                            -----|   |   |---------------------
  26.                                 |___|___|    MEMBER
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.                                 Mountain Software
  34.  
  35.  
  36.                           Autodesk Registered Developer
  37.  
  38.  
  39.  
  40.                                1579 Nottingham Road
  41.                                Charleston, WV 25314
  42.  
  43.                                  CIS 70717,3564 
  44.                               Orders: 1-800-2424-PsL
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.                     Copyright 1992,93 Jerome Lee Workman, jr.
  59.                                all rights reserved
  60.  
  61.  
  62.                           EXTENDED LISP FUNCTION LIBRARY
  63.  
  64.                                 Table of Contents
  65.  
  66.  
  67.  
  68.         Using ELF
  69.           Introduction  . . . . . . . . . . . . . . . . . . . . . . .   1
  70.           ELF Features  . . . . . . . . . . . . . . . . . . . . . . .   1
  71.           Installation  . . . . . . . . . . . . . . . . . . . . . . .   3
  72.           ACAD.ADS  . . . . . . . . . . . . . . . . . . . . . . . . .   3
  73.           ACAD.LSP  . . . . . . . . . . . . . . . . . . . . . . . . .   4
  74.           ELF.INI . . . . . . . . . . . . . . . . . . . . . . . . . .   4
  75.           Sample Programs . . . . . . . . . . . . . . . . . . . . . .   5
  76.  
  77.         ELFDOS Commands
  78.           cd  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
  79.              change directories; chdir, dcd
  80.           cls . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
  81.              clear (erase) the text screen; 
  82.           c:  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
  83.              logs to C: drive; 
  84.           dcopy . . . . . . . . . . . . . . . . . . . . . . . . . . .   7
  85.              copy DOS file(s); 
  86.           derase  . . . . . . . . . . . . . . . . . . . . . . . . . .   7
  87.              erase / delete DOS file(s); ddel
  88.           dir . . . . . . . . . . . . . . . . . . . . . . . . . . . .   7
  89.              prints a file directory list; ddir
  90.           drename . . . . . . . . . . . . . . . . . . . . . . . . . .   7
  91.              rename / move file(s); dmove
  92.           elf . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  93.              displays a list of all ELF commands and functions; 
  94.           ff  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  95.              find file(s) on the AutoCAD library path and DOS path; 
  96.           look  . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  97.              display ASCII file(s) to the screen using the ELF browser;
  98.  
  99.           mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . .   9
  100.              create a directory; md, dmd
  101.           password  . . . . . . . . . . . . . . . . . . . . . . . . .   9
  102.              register  ELF  with your  password  (obtain from  Mountain
  103.              Software); 
  104.           rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . .   9
  105.              remove (delete) a directory; rd, drd
  106.           sd  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  10
  107.              set default disk drive; dsd
  108.           symbol  . . . . . . . . . . . . . . . . . . . . . . . . . .  10
  109.              displays the value of an AutoLISP symbol; 
  110.           ver . . . . . . . . . . . . . . . . . . . . . . . . . . . .  10
  111.              prints ELF, DOS and AutoCAD version numbers; 
  112.           what  . . . . . . . . . . . . . . . . . . . . . . . . . . .  10
  113.              a compact "LIST" command to display entity values; 
  114.  
  115.         AutoLISP Functions
  116.           Optional Parameters . . . . . . . . . . . . . . . . . . . .  11
  117.           Variable Parameters . . . . . . . . . . . . . . . . . . . .  11
  118.  
  119.  
  120.         ELF Documentation                      Table of Contents, Page ii
  121.  
  122.  
  123.           Data Types  . . . . . . . . . . . . . . . . . . . . . . . .  11
  124.           Return Values . . . . . . . . . . . . . . . . . . . . . . .  12
  125.  
  126.         Video Functions
  127.           box . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  128.              draws a box  (rectangle) on the text screen  using graphic
  129.              ascii characters.; (box col row ecol erow attr btype)
  130.           cls . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  131.              clear text screen to optional color attribute; (cls attr)
  132.           get_video . . . . . . . . . . . . . . . . . . . . . . . . .  13
  133.              get current text screen video parameters; (get_video)
  134.           printf  . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  135.              formatted  "C"  type  print  to  text  screen or  graphics
  136.              command prompt area; (printf format ...)
  137.           prts  . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  138.              fast  write  to text  screen  at  col,  row position  with
  139.              optional attribute; (prts col row string attr)
  140.           puts  . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
  141.              fast write to text screen at cursor position with optional
  142.              attribute; (puts string attr)
  143.           restore_screen  . . . . . . . . . . . . . . . . . . . . . .  15
  144.              restores    a    previously    captured    text    screen;
  145.              (restore_screen)
  146.           save_screen . . . . . . . . . . . . . . . . . . . . . . . .  15
  147.              captures  the contents  of  the  text screen  to  a memory
  148.              buffer; (save_screen)
  149.           scr_fill  . . . . . . . . . . . . . . . . . . . . . . . . .  15
  150.              fill a rectangle  of the text screen  with a character and
  151.              color attribute; (scr_fill col row cols rows ch attr)
  152.           scr_printf  . . . . . . . . . . . . . . . . . . . . . . . .  16
  153.              formatted "C" type print to text screen using direct video
  154.              buffer write; (scr_printf format ...)
  155.           set_color . . . . . . . . . . . . . . . . . . . . . . . . .  16
  156.              sets the internal  "color" variable for use  by subsequent
  157.              uses of routines  which can use  the default  color (r11);
  158.              (set_color attr)
  159.  
  160.         Cursor Functions
  161.           get_cursor  . . . . . . . . . . . . . . . . . . . . . . . .  17
  162.              get cursor size / shape; (get_cursor)
  163.           getxy . . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  164.              get cursor screen coordinates; (getxy)
  165.           gotoxy  . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  166.              position the screen cursor; (gotoxy col row)
  167.           set_cursor  . . . . . . . . . . . . . . . . . . . . . . . .  17
  168.              set cursor  size; start  to  end scan  lines;  (set_cursor
  169.              start end)
  170.  
  171.         Window Functions
  172.           set_menu_help . . . . . . . . . . . . . . . . . . . . . . .  18
  173.              sets the user  help string list for  wmenu; (set_menu_help
  174.              <slist>)
  175.           wclose  . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  176.  
  177.  
  178.         ELF Documentation                     Table of Contents, Page iii
  179.  
  180.  
  181.              closes the  top  window restoring  the  screen  under  the
  182.              window; (wclose)
  183.           wcloseall . . . . . . . . . . . . . . . . . . . . . . . . .  19
  184.              closes all windows; (wcloseall)
  185.           wclreol . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  186.              erase from window cursor to end of line; (wclreol)
  187.           wcls  . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  188.              clear window to optional color attribute; (wcls attr)
  189.           werase_line . . . . . . . . . . . . . . . . . . . . . . . .  20
  190.              erase a line of text from a window; (werase_line line)
  191.           wgetstr . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  192.              open a window centered on the text screen, prints a prompt
  193.              on the top border and gets  string input.; (wgetstr prompt
  194.              default length wattr battr btype)
  195.           wgetdrive . . . . . . . . . . . . . . . . . . . . . . . . .  20
  196.              select  a disk  drive from  a menu,  all valid  drives are
  197.              listed   with    their   respective    drive   type    (eg
  198.              removable/floppy, fixed, network, and redirected devices);
  199.              (wgetdrive col row wattr battr hattr btype)
  200.           wgetfile  . . . . . . . . . . . . . . . . . . . . . . . . .  21
  201.              select a  file from a  menu of DOS files  from the current
  202.              directory. The user can change  directories and access all
  203.              available disk  drives.; (wgetfile  filespec fileattr  col
  204.              row wattr battr hattr btype)
  205.           wgetxy  . . . . . . . . . . . . . . . . . . . . . . . . . .  22
  206.              get window screen position; (wgetxy)
  207.           wgotoxy . . . . . . . . . . . . . . . . . . . . . . . . . .  22
  208.              move window cursor; (wgotoxy col row)
  209.           winfo . . . . . . . . . . . . . . . . . . . . . . . . . . .  22
  210.              gets the top window size and position; (winfo)
  211.           wmenu . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
  212.              opens a centered window  and displays a menu. The user can
  213.              then select  one of  the  displayed items.;  (wmenu  slist
  214.              wattr battr hattr btype shadow title)
  215.           wmsg  . . . . . . . . . . . . . . . . . . . . . . . . . . .  24
  216.              opens a centered window, displays a message and optionally
  217.              waits for  a keystroke  and closes the  window; (wmsg  str
  218.              wait attr battr btype)
  219.           wopen . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
  220.              open a window on the text  screen with specified location,
  221.              size,  border,  and  colors;  saving  the  area under  the
  222.              window; (wopen col row cols rows wattr battr btype)
  223.           wpopup  . . . . . . . . . . . . . . . . . . . . . . . . . .  25
  224.              open a window  centered on the  text screen;  (wpopup cols
  225.              rows wattr battr)
  226.           wprintf . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  227.              printf  to  window  at  window  cursor  position; (wprintf
  228.              format ...)
  229.           wprts . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  230.              write  to  window  at  col,  row  position  with  optional
  231.              attribute; (wprts col row string attr)
  232.           wputcen . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  233.  
  234.  
  235.         ELF Documentation                      Table of Contents, Page iv
  236.  
  237.  
  238.              write a  centered string  to window at  window cursor  row
  239.              position; (wputcen str)
  240.           wputs . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
  241.              write to window  at window  cursor position with  optional
  242.              attribute; (puts string attr)
  243.           wscroll . . . . . . . . . . . . . . . . . . . . . . . . . .  27
  244.              scroll window text; (wscroll dir start end lines)
  245.           wshadow . . . . . . . . . . . . . . . . . . . . . . . . . .  27
  246.              adds  a drop  shadow  to  the top  (last  opened)  window;
  247.              (wshadow attr)
  248.           wtitle  . . . . . . . . . . . . . . . . . . . . . . . . . .  28
  249.              prints on  the border of a  window in one  of 6 positions;
  250.              (wtitle <str> [<pos>])
  251.  
  252.         Keyboard Functions
  253.           getch . . . . . . . . . . . . . . . . . . . . . . . . . . .  28
  254.              get a character from the keyboard; (getch)
  255.           getche  . . . . . . . . . . . . . . . . . . . . . . . . . .  29
  256.              get a character from the keyboard with echo; (getche)
  257.           getkey  . . . . . . . . . . . . . . . . . . . . . . . . . .  29
  258.              get a keystroke from the keyboard; (getkey)
  259.           kbhit . . . . . . . . . . . . . . . . . . . . . . . . . . .  29
  260.              checks  the  keyboard  buffer  for  a  waiting  keystroke;
  261.              (kbhit)
  262.           key_clear . . . . . . . . . . . . . . . . . . . . . . . . .  30
  263.              clears the  keyboard  buffer of  any  pending  keystrokes;
  264.              (key_clear)
  265.           key_ready . . . . . . . . . . . . . . . . . . . . . . . . .  30
  266.              returns immediately with a waiting key; (key_ready)
  267.           key_stat  . . . . . . . . . . . . . . . . . . . . . . . . .  30
  268.              gets the state of  keyboard shift and other  special keys;
  269.              (key_stat)
  270.           key_stuff . . . . . . . . . . . . . . . . . . . . . . . . .  30
  271.              "pushes" keys into the keyboard buffer; (key_stuff str)
  272.  
  273.         Directory Functions
  274.           access  . . . . . . . . . . . . . . . . . . . . . . . . . .  31
  275.              determines if a  file exists and can  be accessed by mode;
  276.              (access path mode)
  277.           chdir . . . . . . . . . . . . . . . . . . . . . . . . . . .  31
  278.              change disk directory; (chdir path)
  279.           chpath  . . . . . . . . . . . . . . . . . . . . . . . . . .  32
  280.              change current disk drive and directory; (chpath path)
  281.           disk_ready  . . . . . . . . . . . . . . . . . . . . . . . .  32
  282.              verifies that  a removable  (floppy)  drive is  ready  and
  283.              readable; (disk_ready drive)
  284.           disk_type . . . . . . . . . . . . . . . . . . . . . . . . .  32
  285.              ; (disk_type drive)
  286.           disk_valid  . . . . . . . . . . . . . . . . . . . . . . . .  32
  287.              verifies  that a  disk drive  is a  valid device  (but not
  288.              necessarily   ready    if   a   removable/floppy   drive);
  289.              (disk_valid drive)
  290.           erasefile . . . . . . . . . . . . . . . . . . . . . . . . .  33
  291.  
  292.  
  293.         ELF Documentation                       Table of Contents, Page v
  294.  
  295.  
  296.              erase file(s); (erasefile filename)
  297.           file_exists . . . . . . . . . . . . . . . . . . . . . . . .  33
  298.              determines if a file exists; (file_exists path)
  299.           findfirst . . . . . . . . . . . . . . . . . . . . . . . . .  33
  300.              finds  the  first  instance  of  a  file  who's  name  and
  301.              directory  attributes  match  the  arguments.;  (findfirst
  302.              filespec attribute)
  303.           findnext  . . . . . . . . . . . . . . . . . . . . . . . . .  34
  304.              finds the next  occurrence of  the file specification  and
  305.              attribute after a findfirst call; (findnext)
  306.           fullpath  . . . . . . . . . . . . . . . . . . . . . . . . .  34
  307.              expands  a  partial path  into  a  full  DOS path  string;
  308.              (fullpath path)
  309.           getdir  . . . . . . . . . . . . . . . . . . . . . . . . . .  35
  310.              returns a string with the current drive:\path; (getdir)
  311.           getdiskfree . . . . . . . . . . . . . . . . . . . . . . . .  35
  312.              returns size statistics in the specified drive number as a
  313.              list; (getdiskfree 3)
  314.           getdisk . . . . . . . . . . . . . . . . . . . . . . . . . .  35
  315.              returns the  current drive  number (A=1,  B=2, C=3,  etc);
  316.              (getdisk)
  317.           load_dirs . . . . . . . . . . . . . . . . . . . . . . . . .  35
  318.              returns a list of strings containing file directories from
  319.              the current directory; (load_dirs)
  320.           load_drives . . . . . . . . . . . . . . . . . . . . . . . .  36
  321.              returns  a  list  of  strings  containing  all valid  disk
  322.              drives; (load_drives)
  323.           load_files  . . . . . . . . . . . . . . . . . . . . . . . .  36
  324.              returns a  list of  strings  containing files  matching  a
  325.              filespec  and  directory  attribute; (load_files  filespec
  326.              attribute)
  327.           makepath  . . . . . . . . . . . . . . . . . . . . . . . . .  36
  328.              Combines  the four components into a full DOS path string;
  329.              (makepath drive dir name ext)
  330.           mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . .  36
  331.              creates a new directory; (mkdir dirname)
  332.         d       i       r       e       c       t       o       r       y
  333.           <string> directory to create
  334.           rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . .  37
  335.              removes (deletes) a directory; (rmdir dirname)
  336.           setdisk . . . . . . . . . . . . . . . . . . . . . . . . . .  37
  337.              logs to the specified disk drive; (setdisk drive)
  338.           splitpath . . . . . . . . . . . . . . . . . . . . . . . . .  37
  339.              splits  a  DOS  path  string  into  its  four  components;
  340.              (splitpath path)
  341.           unlink  . . . . . . . . . . . . . . . . . . . . . . . . . .  38
  342.              erase file(s); (unlink filename)
  343.  
  344.         File Functions
  345.           copyfile  . . . . . . . . . . . . . . . . . . . . . . . . .  38
  346.              copies file(s); (copyfile source destination)
  347.           look  . . . . . . . . . . . . . . . . . . . . . . . . . . .  39
  348.  
  349.  
  350.         ELF Documentation                      Table of Contents, Page vi
  351.  
  352.  
  353.              displays  an  ASCII  file to  screen  using  the ELF  file
  354.              viewer; (look filespec)
  355.           movefile  . . . . . . . . . . . . . . . . . . . . . . . . .  39
  356.              moves / renames file(s); (movefile source destination)
  357.           read_file . . . . . . . . . . . . . . . . . . . . . . . . .  39
  358.              reads an  ASCII file and  returns a string  list from file
  359.              records.  Each line  in  the text  file is  parsed  into a
  360.              string  and  appended to  the  returned  list.; (read_file
  361.              filespec mode)
  362.           write_file  . . . . . . . . . . . . . . . . . . . . . . . .  39
  363.              opens an ASCII file and  writes a string list to  the file
  364.              and then  closes the  file. Each  string is placed  in the
  365.              text file as a line of text.; (write_file filespec type)
  366.  
  367.         Binary File
  368.  
  369.           fclose  . . . . . . . . . . . . . . . . . . . . . . . . . .  40
  370.              closes a binary file; (fclose <handle>)
  371.           feof  . . . . . . . . . . . . . . . . . . . . . . . . . . .  40
  372.              returns nonnil if the  end of file has been reached; (feof
  373.              <handle>
  374.           ferror  . . . . . . . . . . . . . . . . . . . . . . . . . .  41
  375.              returns nonnil  if OS file error  indicator has been  set;
  376.              (ferror <handle>)
  377.           fgetc . . . . . . . . . . . . . . . . . . . . . . . . . . .  41
  378.              reads a character (byte) value  from a binary file; (fgetc
  379.              <handle>)
  380.           fgets . . . . . . . . . . . . . . . . . . . . . . . . . . .  41
  381.              reads a string of up to len characters from a binary file;
  382.              (fgets <handle> <len>)
  383.           fgetsc  . . . . . . . . . . . . . . . . . . . . . . . . . .  41
  384.              reads a signed character value from a binary file; (fgetsc
  385.              <handle>)
  386.           fgetint . . . . . . . . . . . . . . . . . . . . . . . . . .  42
  387.              reads a  short integer (2  byte word) value  from a binary
  388.              file; (fgetint <handle>)
  389.           fgetlong  . . . . . . . . . . . . . . . . . . . . . . . . .  42
  390.              reads a  long integer  (4 byte  double word) value  from a
  391.              binary file; (fgetlong <handle>)
  392.           fgetreal  . . . . . . . . . . . . . . . . . . . . . . . . .  42
  393.              reads a  real (8  byte  double precision  floating  point)
  394.              value from a binary file; (fgetreal <handle>)
  395.           fopen . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
  396.              opens a binary file; (fopen <fname><mode>)
  397.           fputc . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
  398.              writes a  character (byte) value to a  binary file; (fputc
  399.              <handle> <char>)
  400.           fputs . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
  401.              writes  a  string  to  a   binary  file;  (fputs  <handle>
  402.              <string>)
  403.           fputint . . . . . . . . . . . . . . . . . . . . . . . . . .  44
  404.              writes an  integer (2 byte  word) value to  a binary file;
  405.              (fputint <handle> <int>)
  406.  
  407.  
  408.         ELF Documentation                     Table of Contents, Page vii
  409.  
  410.  
  411.           fputlong  . . . . . . . . . . . . . . . . . . . . . . . . .  44
  412.              writes  a long  integer (4  byte double  word) value  to a
  413.              binary file; (fputlong <handle> <long>)
  414.           fputreal  . . . . . . . . . . . . . . . . . . . . . . . . .  44
  415.              writes a  real (8  byte double  precision floating  point)
  416.              value to a binary file; (fputreal <handle> <real>)
  417.           frewind . . . . . . . . . . . . . . . . . . . . . . . . . .  44
  418.              moves the  file pointer  to  the  beginning of  the  file;
  419.              (frewind <handle>)
  420.           fseek . . . . . . . . . . . . . . . . . . . . . . . . . . .  45
  421.              moves the file pointer; (fseek <handle><origin><offset>)
  422.           ftell . . . . . . . . . . . . . . . . . . . . . . . . . . .  45
  423.              returns the  current position  of a  binary file  pointer;
  424.              (ftell <handle>)
  425.  
  426.         Math Functions
  427.           | . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
  428.              returns the  result of a  bitwise OR of  the arguments; (|
  429.              ...)
  430.           ||  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
  431.              returns the result  of a logical OR  of the arguments; (||
  432.              ...)
  433.           & . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
  434.              returns the result  of a bitwise AND  of the arguments; (&
  435.              ...)
  436.           &&  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
  437.              returns the result of  a logical AND of the arguments; (&&
  438.              ...)
  439.           acos  . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
  440.              returns the inverse cosine of the argument; (acos rad)
  441.           asin  . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  442.              returns the inverse sine of the argument; (asin rad)
  443.           ceil  . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  444.              returns the  smallest  integer greater  or  equal  to  the
  445.              argument; (ceil rval)
  446.           cosh  . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  447.              returns the hyperbolic cosine of the argument; (cosh rad)
  448.           dtr . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  449.              converts an angle in degrees to radians; (dtr ang)
  450.           floor . . . . . . . . . . . . . . . . . . . . . . . . . . .  48
  451.              returns the largest integer not greater than the argument;
  452.              (floor rval)
  453.           hibyte  . . . . . . . . . . . . . . . . . . . . . . . . . .  48
  454.              returns the upper  (most significant) byte of  an integer;
  455.              (hibyte val)
  456.           int2sc  . . . . . . . . . . . . . . . . . . . . . . . . . .  48
  457.              converts a signed integer into a signed char; (int2sc val)
  458.           lobyte  . . . . . . . . . . . . . . . . . . . . . . . . . .  48
  459.              returns the lower (least significant)  byte of an integer;
  460.              (lobyte val)
  461.           log10 . . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  462.              returns  the logarithm  to the  base  10 of  the argument;
  463.              (log10 x)
  464.  
  465.  
  466.         ELF Documentation                    Table of Contents, Page viii
  467.  
  468.  
  469.           rand  . . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  470.              generates a pseudo random number; (rand)
  471.           round . . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  472.              rounds a real value; (round val places)
  473.           rtd . . . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  474.              converts an angle in radians to degrees; (rtd ang)
  475.           sinh  . . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  476.              returns the hyperbolic sine of the argument; (sinh rad)
  477.           srand . . . . . . . . . . . . . . . . . . . . . . . . . . .  50
  478.              seeds the random number generator; (srand i)
  479.           swapb . . . . . . . . . . . . . . . . . . . . . . . . . . .  50
  480.              reverses bytes in a (short) integer; (swapb i)
  481.           tan . . . . . . . . . . . . . . . . . . . . . . . . . . . .  50
  482.              returns  the trigonometric tangent  of the  argument; (tan
  483.              rad)
  484.           tanh  . . . . . . . . . . . . . . . . . . . . . . . . . . .  50
  485.              returns the hyperbolic tangent of the argument; (tanh rad)
  486.           xtoi  . . . . . . . . . . . . . . . . . . . . . . . . . . .  51
  487.              converts a hex string to an integer; (xtoi s)
  488.  
  489.         List Handling Functions
  490.           bsearch . . . . . . . . . . . . . . . . . . . . . . . . . .  51
  491.              located a value in  a sorted string, integer or real value
  492.              list; (bsearch vlist key)
  493.           delete  . . . . . . . . . . . . . . . . . . . . . . . . . .  51
  494.              deletes a list  or atom  from another  list; (delete  list
  495.              pos)
  496.           insert  . . . . . . . . . . . . . . . . . . . . . . . . . .  52
  497.              inserts a list or atom into another list; (insert list pos
  498.              item)
  499.           lfind . . . . . . . . . . . . . . . . . . . . . . . . . . .  52
  500.              located  a value  in an unsorted  string, integer  or real
  501.              value list; (lfind vlist key)
  502.           lsearch . . . . . . . . . . . . . . . . . . . . . . . . . .  52
  503.              located a value  in a string, integer  or real value list;
  504.              (lsearch vlist key)
  505.           qsort . . . . . . . . . . . . . . . . . . . . . . . . . . .  53
  506.              sorts a string, integer  or real value list; or  a list of
  507.              lists; (qsort lst field)
  508.           replace . . . . . . . . . . . . . . . . . . . . . . . . . .  53
  509.              replace a  list or atom  in a list  with another; (replace
  510.              list pos item)
  511.           symbol  . . . . . . . . . . . . . . . . . . . . . . . . . .  53
  512.              Displays the contents of  a symbol to the screen using the
  513.              ELF file/symbol viewer.; (symbol sym)
  514.  
  515.         String Handling Functions
  516.           field . . . . . . . . . . . . . . . . . . . . . . . . . . .  54
  517.              returns a substring of str1 from  token delimiters in str2
  518.              and position.; (field str1 str2 pos)
  519.           set_edit_help . . . . . . . . . . . . . . . . . . . . . . .  54
  520.              sets the user help  string list for the function (strget);
  521.              (set_edit_help <slist>)
  522.  
  523.  
  524.         ELF Documentation                      Table of Contents, Page ix
  525.  
  526.  
  527.           sprintf . . . . . . . . . . . . . . . . . . . . . . . . . .  54
  528.              same as  printf except that nothing is printed, the string
  529.              is returned; (sprintf format ...)
  530.           strchr  . . . . . . . . . . . . . . . . . . . . . . . . . .  55
  531.              finds  the first  occurrence of  ch in  str and  returns a
  532.              substring starting at that character; (strchr str ch)
  533.           strcmp  . . . . . . . . . . . . . . . . . . . . . . . . . .  55
  534.              compares  two  strings  for   equality  (case  sensitive);
  535.              (strcmp str1 str2)
  536.           strcspn . . . . . . . . . . . . . . . . . . . . . . . . . .  55
  537.              determine the length of  the prefix of str1 made  entirely
  538.              of chars not in str2; (strcspn str1 str2)
  539.           strdate . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  540.              returns  the current  date from  the internal  clock as  a
  541.              formatted string; (strdate)
  542.           strdela . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  543.              delete  all  occurrences  of  chars  in  str2  from  str1;
  544.              (strdela str1 str2)
  545.           strget  . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  546.              edit a string on  the text screen with cursor  positioning
  547.              and editing, background mask, color attribute control, and
  548.              on line help.; (strget str len curpos mask attr ...)
  549.           stricmp . . . . . . . . . . . . . . . . . . . . . . . . . .  57
  550.              compares  two strings  for  equality  (case  insensitive);
  551.              (stricmp str1 str2)
  552.           strncpy . . . . . . . . . . . . . . . . . . . . . . . . . .  58
  553.              copies the first n characters of a string; (strncpy str n)
  554.           strnset . . . . . . . . . . . . . . . . . . . . . . . . . .  58
  555.              fills a string; (strnset char len)
  556.           strpbrk . . . . . . . . . . . . . . . . . . . . . . . . . .  58
  557.              returns  a  substring  of  the  first  occurrence  of  any
  558.              character of str2 in str1; (strstr str1 str2)
  559.           strrchr . . . . . . . . . . . . . . . . . . . . . . . . . .  58
  560.              finds  the last  occurrence  of ch  in str  and  returns a
  561.              substring starting at that character; (strrchr str ch)
  562.           strrev  . . . . . . . . . . . . . . . . . . . . . . . . . .  59
  563.              returns  the string  argument  with  the  character  order
  564.              reversed; (strrev str)
  565.           strspn  . . . . . . . . . . . . . . . . . . . . . . . . . .  59
  566.              determine the length of  the prefix of str1  made entirely
  567.              of chars in str2; (strspn str1 str2)
  568.           strstr  . . . . . . . . . . . . . . . . . . . . . . . . . .  59
  569.              returns a  substring of  the first  occurrence of  str2 in
  570.              str1; (strstr str1 str2)
  571.           strswap . . . . . . . . . . . . . . . . . . . . . . . . . .  59
  572.              swaps all occurrences of char1 with char2 in str; (strswap
  573.              str char1 char2)
  574.           strtime . . . . . . . . . . . . . . . . . . . . . . . . . .  60
  575.              returns  the current  time from  the internal  clock  as a
  576.              formatted string; (strtime)
  577.           strtok  . . . . . . . . . . . . . . . . . . . . . . . . . .  60
  578.              returns the first substring of  str1 from token delimiters
  579.              in  str2.  subsequent  calls  after   the  first  with  no
  580.  
  581.  
  582.         ELF Documentation                       Table of Contents, Page x
  583.  
  584.  
  585.              arguments  will   return  the   second  and   any  further
  586.              substrings; (strtok str1 str2)
  587.           strtrim . . . . . . . . . . . . . . . . . . . . . . . . . .  60
  588.              trim  white  space  (all  char  values  <  '!')  from  the
  589.              beginning (left side) and end (right side); and compresses
  590.              white space  within  a string  to a  single space  between
  591.              words; (strtrim str)
  592.           strtriml  . . . . . . . . . . . . . . . . . . . . . . . . .  61
  593.              trim  white  space from  the beginning  (left  side)  of a
  594.              string; (strtriml str)
  595.           strtrimr  . . . . . . . . . . . . . . . . . . . . . . . . .  61
  596.              trim white  space from the  end (right side)  of a string;
  597.              (strtrimr str)
  598.           tolower . . . . . . . . . . . . . . . . . . . . . . . . . .  61
  599.              ; (tolower char)
  600.           toupper . . . . . . . . . . . . . . . . . . . . . . . . . .  61
  601.              ; (toupper char)
  602.  
  603.         Character Classification Functions
  604.           isalnum . . . . . . . . . . . . . . . . . . . . . . . . . .  62
  605.              returns a non-zero value if argument is a letter or digit;
  606.              (isalnum char)
  607.           isascii . . . . . . . . . . . . . . . . . . . . . . . . . .  62
  608.              returns  a  non-zero   value  if  argument  is   an  ASCII
  609.              character; (isascii char)
  610.           iscntl  . . . . . . . . . . . . . . . . . . . . . . . . . .  62
  611.              returns  a  non-zero  value  if   argument  is  a  control
  612.              character; (iscntl char)
  613.           isdigit . . . . . . . . . . . . . . . . . . . . . . . . . .  62
  614.              returns a  non-zero value if argument  is a numeric digit;
  615.              (isdigit char)
  616.           isgraph . . . . . . . . . . . . . . . . . . . . . . . . . .  63
  617.              returns  a  non-zero  value  if   argument  is  a  visible
  618.              printable character; (isgraph char)
  619.           islower . . . . . . . . . . . . . . . . . . . . . . . . . .  63
  620.              returns  a  non-zero value  if argument  is  a  lower case
  621.              letter; (islower char)
  622.           isodigit  . . . . . . . . . . . . . . . . . . . . . . . . .  63
  623.              returns a non-zero value if argument is an octal digit (0-
  624.              7); (isodigit char)
  625.           isprint . . . . . . . . . . . . . . . . . . . . . . . . . .  63
  626.              returns  a  non-zero  value  if  argument  is a  printable
  627.              character; (isprint char)
  628.           ispunct . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  629.              returns a  non-zero value  if  argument is  a  punctuation
  630.              character; (ispunct char)
  631.           isspace . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  632.              returns a  non-zero value  if  argument is  a  white-space
  633.              character (space, tab, newline, etc); (isspace char)
  634.           isupper . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  635.              returns a  non-zero  value if  argument is  an upper  case
  636.              letter; (isupper char)
  637.           isxdigit  . . . . . . . . . . . . . . . . . . . . . . . . .  64
  638.  
  639.  
  640.         ELF Documentation                      Table of Contents, Page xi
  641.  
  642.  
  643.              returns a  non-zero value  if  argument is  a  hexadecimal
  644.              digit (0-F); (isxdigit char)
  645.  
  646.         Entity Creation
  647.           arc . . . . . . . . . . . . . . . . . . . . . . . . . . . .  65
  648.              create an arc entity; (arc cen rad sang eang layer)
  649.           circle  . . . . . . . . . . . . . . . . . . . . . . . . . .  65
  650.              create a circle entity; (circle cen rad layer)
  651.           grid  . . . . . . . . . . . . . . . . . . . . . . . . . . .  65
  652.              create  a  grid  of line  entities;  (grid  pnt cols  rows
  653.              colwidth rowheight layer)
  654.           line  . . . . . . . . . . . . . . . . . . . . . . . . . . .  66
  655.              create a line entity; (line from to layer)
  656.           point . . . . . . . . . . . . . . . . . . . . . . . . . . .  66
  657.              create a point entity; (point pt layer)
  658.           pline . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
  659.              create a polyline entity; (pline vlist layer width flags)
  660.           rect  . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
  661.              create a polygon  rectangle entity; (rect pt  width height
  662.              layer)
  663.           solid . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
  664.              create a solid entity; (solid pt1 pt2 pt3 pt4 layer)
  665.           text  . . . . . . . . . . . . . . . . . . . . . . . . . . .  68
  666.              create a  text entity; (text  pt str height  layer rot obl
  667.              flg hal val apt)
  668.  
  669.  
  670.         Selection Set
  671.         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  672.           ss_filter . . . . . . . . . . . . . . . . . . . . . . . . .  69
  673.              filters a selection set removing all entities except those
  674.              in a list of entity types; (ss_filter ss slist)
  675.           ss_move . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  676.              uses the AutoCAD dragger to move a selection set; (ss_move
  677.              ss pt)
  678.           ss_rotate . . . . . . . . . . . . . . . . . . . . . . . . .  69
  679.              uses  the  AutoCAD  dragger  to  rotate  a selection  set;
  680.              (ss_rotate ss pt)
  681.           ss_scale  . . . . . . . . . . . . . . . . . . . . . . . . .  70
  682.              uses  the  AutoCAD  dragger  to  scale  a  selection  set;
  683.              (ss_scale ss pt)
  684.           ss_union  . . . . . . . . . . . . . . . . . . . . . . . . .  70
  685.              merges all entities in two selection sets into a new third
  686.              selection set; (ss_union ss1 ss2)
  687.           ss_inters . . . . . . . . . . . . . . . . . . . . . . . . .  70
  688.              merges  all entities  common to two selection  sets into a
  689.              new third selection set; (ss_inters ss1 ss2)
  690.           ss_diff . . . . . . . . . . . . . . . . . . . . . . . . . .  70
  691.              creates a new selection from two selection sets by copying
  692.              the  first and removing entities found  in the second from
  693.              the new selection set.; (ss_diff ss1 ss2)
  694.           ss_xform  . . . . . . . . . . . . . . . . . . . . . . . . .  71
  695.  
  696.  
  697.         ELF Documentation                     Table of Contents, Page xii
  698.  
  699.  
  700.              transform   entities   in   a   selection   set  using   a
  701.              transformation matrix; (ss_xform ss mat)
  702.  
  703.         Utility / Miscellaneous Functions . . . . . . . . . . . . . .  71
  704.           adsdump . . . . . . . . . . . . . . . . . . . . . . . . . .  71
  705.              prints the  data  type and  value of  an AutoLISP  symbol;
  706.              (adsdump sym)
  707.           beep  . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  708.              sound a beep on  the PC speaker for optional frequency and
  709.              duration; (beep freq duration)
  710.           clock . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  711.              reads the current internal clock; (clock)
  712.           exit  . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  713.              cancels  execution and  returns  to the  Command:  prompt;
  714.              (exit)
  715.           getver  . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  716.              returns  the  ELF,   AutoCAD,  and  DOS  version  numbers;
  717.              (getver)
  718.           last_error  . . . . . . . . . . . . . . . . . . . . . . . .  73
  719.              returns the last internal error message; (last_error)
  720.           initialize  . . . . . . . . . . . . . . . . . . . . . . . .  73
  721.              resets ELF and loads ELF.INI symbols; (initialize)
  722.           nosound . . . . . . . . . . . . . . . . . . . . . . . . . .  73
  723.              turns off the PC speaker after a sound function; (nosound)
  724.           pause_key . . . . . . . . . . . . . . . . . . . . . . . . .  73
  725.              prints "press  any key  to continue..."  and  waits for  a
  726.              keystroke; (pause_key)
  727.           sound . . . . . . . . . . . . . . . . . . . . . . . . . . .  73
  728.              turns on  the PC  speaker at  a specified tone  frequency;
  729.              (sound freq)
  730.           system  . . . . . . . . . . . . . . . . . . . . . . . . . .  74
  731.              executes a DOS command; (system cmd)
  732.           wait  . . . . . . . . . . . . . . . . . . . . . . . . . . .  74
  733.              suspend execution for a specified time duration; (wait ti)
  734.  
  735.         Symbols
  736.           *last_error*  . . . . . . . . . . . . . . . . . . . . . . .  74
  737.              the last error message string
  738.           color . . . . . . . . . . . . . . . . . . . . . . . . . . .  74
  739.              default color attribute
  740.           edit_help . . . . . . . . . . . . . . . . . . . . . . . . .  74
  741.              string  list  with  user  defined  help  for the  (strget)
  742.              function
  743.           error_mode  . . . . . . . . . . . . . . . . . . . . . . . .  74
  744.              controls ELF error message display; 1=display  errors,0=no
  745.              message
  746.           menu_help . . . . . . . . . . . . . . . . . . . . . . . . .  75
  747.              string  list  with  user  defined  help  for  the  (wmenu)
  748.              function
  749.           Copyright . . . . . . . . . . . . . . . . . . . . . . . . .  76
  750.           Trademark . . . . . . . . . . . . . . . . . . . . . . . . .  76
  751.  
  752.  
  753.         Elf Documentation                                          Page 1
  754.  
  755.  
  756.  
  757.         Using ELF
  758.  
  759.         Introduction
  760.  
  761.         ELF is  a library of  commands and functions designed  to enhance
  762.         AutoCAD and  AutoLISP. The  ELF library  contains 16  utility and
  763.         file management commands,  and over  190 functions for  AutoLISP,
  764.         all contained in a single EXP file.
  765.  
  766.         ELF  gives  the AutoLISP  programmer  a professional  programming
  767.         language rivaling  many commercial  compiled language  libraries.
  768.         The range  of functions include  those for text screen  video and
  769.         window control; popup menus and data  entry with a build in  help
  770.         system; sound;  keyboard; string manipulation; math;  sorting and
  771.         searching;  list handling;  file  and directory  handling; entity
  772.         creation; and several utility functions.
  773.  
  774.         Non-programmers  will   also  appreciate   the  mini-applications
  775.         (ELFapps), including  the ELF  notepad; and  the several  utility
  776.         commands.
  777.  
  778.         In  addition,  ELF  contains ELFDOS,  which  implements  many DOS
  779.         commands within  AutoCAD for file  management, a file  and symbol
  780.         browser, and integrated help.
  781.  
  782.         ELF is designed  to operate with AutoCAD 386  (release 10-386 and
  783.         above)  on IBM  PC and  compatible  computers under  the MS/PCDOS
  784.         operating system.
  785.  
  786.  
  787.         ELF Features
  788.  
  789.         *  193 new functions for AutoLISP programmers:
  790.              + Video (11 functions)
  791.                   -    fast direct video writes to the text screen
  792.                   -    printf for C programmers
  793.                   -    color attribute control
  794.                   -    screen save, fill, and restore
  795.              + Cursor (4)
  796.                   -    cursor positioning
  797.                   -    cursor size shape
  798.              + Text screen windowing (23)
  799.                   -    multiple overlapping  windows with  shaded borders
  800.                        and drop shadows
  801.                   -    menus and line editor with integrated user defined
  802.                        help system
  803.                   -    file dialog
  804.              + Keyboard (8)
  805.                   -    getkey, getch, getche, and kbhit functions
  806.                   -    keyboard status
  807.                   -    stuff keyboard buffer with keystrokes
  808.              + Directory (23)
  809.  
  810.  
  811.         Elf Documentation                                          Page 2
  812.  
  813.  
  814.                   -    create / remove / change directories
  815.                   -    read / verify / log to all disk drives
  816.                   -    read disk directory and disk statistics
  817.                   -    copy, move, erase, and rename files.
  818.                   -    file path manipulation
  819.              + File (23)
  820.                   -    fast one step ASCII file read and write
  821.                   -    binary file I/O
  822.              + List Handling (8)
  823.                   -    insert, delete, and replace items in a list
  824.                   -    sort and search a string, integer, or real list
  825.                   -    view a string list using the internal browser
  826.              + String Handling (25)
  827.                   -    full C library string scanning and manipulation
  828.                   -    a  full featured  line  editor  for flexable  data
  829.                        entry
  830.              + Character Classification (13)
  831.              + Math (23)
  832.                   -    expanded trig, logical, and bit manipulation
  833.              + Entity Creation (9)
  834.                   -    fast basic entity creation in one  statement using
  835.                        entmake
  836.              + Selection Set Manipulation (8)
  837.                   -    selection set filter
  838.                   -    graphic dragger interface
  839.                   -    entity transformation
  840.                   -    logical union/intersection/difference
  841.              + Utility / Misc (13)
  842.                   -    sound routines
  843.                   -    dump a list or entity for debugging
  844.                   -    run other DOS programs under program control
  845.                   -    clock and timer routines
  846.  
  847.         *    an ASCII file browser (like the shareware program LIST)
  848.  
  849.         *    ELFDOS  - "DOS-like"  file management  commands from  within
  850.              AutoCAD,  no more  shelling out  to copy  a file  or perform
  851.              other DOS functions.
  852.  
  853.         *    Three  useful  "ELFapps"   that  utilize  the  ELF   library
  854.              including:    
  855.  
  856.              +    NotePad -  a windowed /  full screen ASCII  file editor
  857.                   written in AutoLISP using ELF
  858.              +    Etables -  an AutoCAD  "stock" application  modified to
  859.                   utilize the ELF menus and symbol browser to display all
  860.                   tables within a drawing.
  861.              +    Demo - a program the demonstrates many of the functions
  862.                   of the ELF library
  863.  
  864.  
  865.         Elf Documentation                                          Page 3
  866.  
  867.  
  868.         Installation
  869.  
  870.         Copy the  ELF files  from the  distribution diskette  (or extract
  871.         them from  the archive file)  to any subdirectory on  the AutoCAD
  872.         library  path.  You  may  place   the  ELF  files  in  their  own
  873.         subdirectory (eg C:\ELF) and  add that directory to your  AutoCAD
  874.         Library Path. To insure that AutoCAD can the find files, add  the
  875.         ELF  directory  to   your  ACAD  environment  variable   in  your
  876.         AUTOEXEC.BAT or ACAD386.BAT file:
  877.  
  878.         Example:
  879.  
  880.         SET ACAD=C:\ACAD386\SUPPORT;C:\ELF
  881.  
  882.  
  883.         ACAD.ADS
  884.  
  885.         If you have an ACAD.ADS file, then  add ELF to that file with  an
  886.         ASCII editor, or create a  file named ACAD.ADS to a  directory on
  887.         the library path.
  888.  
  889.         Example contents release 12 ACAD.ADS file:
  890.  
  891.         ACADAPP
  892.         ELF
  893.  
  894.         If ELF does not load with  your ACAD.ADS file then you must  load
  895.         it manually:
  896.  
  897.         eg: (XLOAD"ELF")
  898.  
  899.         Once loaded,  ELF will  display  the following  message, and  ELF
  900.         commands and functions will be available for use:
  901.  
  902.         ELF vX.XX - <compile date>, Registered to: Your Name
  903.         Copyright 1992,93 Mountain Software. - Enter "ELF" for help:
  904.  
  905.         You may add the following code to any AutoLISP program which uses
  906.         ELF to automatically xload ELF.EXP:
  907.  
  908.         (if(not(member(findfile "ELF.EXP") (ADS)))
  909.           (if(not(xload"ELF" nil)) (progn
  910.             (princ "\nERROR: Unable to xload ELF.EXP")
  911.             (princ\nThis program requires ELF to operate!\007")))
  912.         )
  913.  
  914.         or you can simply add (load"ELF") to your program to load ELF.EXP
  915.         and define color and key symbols.
  916.  
  917.  
  918.         Elf Documentation                                          Page 4
  919.  
  920.  
  921.         ACAD.LSP
  922.  
  923.         ELF functions can not be  executed until ELF initializes. AutoCAD
  924.         does not initialize ADS programs until after  ACAD.LSP loads. You
  925.         can  include ELF  functions  in  any function  that  you wish  to
  926.         (defun) in ACAD.LSP, but they can not execute during the load.
  927.  
  928.         Therefore, if you wish to execute an ELF function at entry to the
  929.         drawing editor,  you can place  that function  into the  function
  930.         (S::STARTUP)  which  will  execute  automatically  after  AutoCAD
  931.         initialized ELF.
  932.  
  933.  
  934.         ELF.INI
  935.  
  936.         This file provides  a means  to control  the name  prefix of  elf
  937.         functions  and  initial  setting  of   the  ELF  system  variable
  938.         "error_mode". You  can also set  AutoLISP symbols (release  12 or
  939.         higher)  from  ELF.INI. The  layout  of  ELF.INI  (an ASCII  file
  940.         similar to "Microsoft Windows" INI files) is as follows:
  941.  
  942.         [ELF]               begin ELF variable/symbol definition
  943.  
  944.         Symbols are defined one line  per symbol as <symbol_name>=<value>
  945.         where  <value> can  be a  string(the default),  integer, or  real
  946.         value. Integer values must be  prepended with a #(pound sign) and
  947.         real values with a %(percent sign).
  948.  
  949.         <string_variable>=<string>
  950.         <integer_variable>=%<int>
  951.         <real_variable>=#<real>
  952.  
  953.         Example:
  954.  
  955.         [ELF]
  956.         function_prefix=elf_
  957.         error_mode=%0
  958.         color=%7
  959.  
  960.         The  "function_prefix"  variable  string  is   prepended  to  ELF
  961.         functions  during   ELF's  "defun"   process.  For  example,   if
  962.         function_prefix=elf_  then the function  "printf" will be defined
  963.         as "elf_printf".
  964.  
  965.         The "error_mode" variable controls ELF's error message display.
  966.         error_mode=%1  display error messages
  967.         error_mode=%0  don't display error messages
  968.  
  969.  
  970.         Elf Documentation                                          Page 5
  971.  
  972.  
  973.         Sample Programs
  974.  
  975.         The following files  contain "ELFapps"  that demonstrate many  of
  976.         the  ELF functions.  You may  run  these programs  to test  ELF's
  977.         features  and  copy portions  of  the code  for use  in  your own
  978.         programs.
  979.  
  980.  
  981.         Filename       Description
  982.  
  983.         DEMO.LSP       A demonstration of many of ELF's functions
  984.         NOTEPAD.LSP    An ASCII file editor written in AutoLISP and ELF.
  985.         ETABLES.LSP    A  program   which  demonstrates  how   a  "stock"
  986.                        AutoLISP  program   (here  TABLES.LSP,   a  sample
  987.                        program included with other AutoCAD sample  files)
  988.                        can be  easily modified using  functions from  ELF
  989.                        and greatly improved from it's original form.
  990.         SELSET.LSP     demonstrates the  ADS dragger  functions, and  the
  991.                        selection      set     transformation/manipulation
  992.                        functions
  993.         ELF.LSP        defines  symbols  for  screen  attributes,  border
  994.                        types, keycode  values, and xloads ELF.EXP  if not
  995.                        already loaded.
  996.  
  997.  
  998.         Elf Documentation                                          Page 6
  999.  
  1000.  
  1001.  
  1002.         ELFDOS Commands
  1003.  
  1004.         ELF contains many  file manipulation  commands equivalent to  the
  1005.         same commands in DOS.  Many of the command names are  the same as
  1006.         the DOS command  except that the letter "D" is added as the first
  1007.         letter  of  the  command to  differentiate  from  similarly named
  1008.         AutoCAD command (eg DCOPY for COPY).
  1009.  
  1010.         Why not just shell to DOS?
  1011.  
  1012.         The  ELF  replacements  for  DOS commands  are  faster  and  more
  1013.         convenient.  It takes time to  shell to DOS  and return after the
  1014.         command has completed.
  1015.  
  1016.         ELF  also adds  ASCII file  and  AutoLISP symbol  viewers, and  a
  1017.         filefind command.
  1018.  
  1019.                      ----------------------------------------
  1020.  
  1021.         Function:     cd                                     ELF Commands
  1022.  
  1023.         Synopsis:   change directories
  1024.         Aliases:    chdir, dcd
  1025.         Arguments:  directory name
  1026.         Notes:      works just like the DOS chdir command except a space
  1027.                     or Enter is required between CD and the directory
  1028.                     name
  1029.         Example:    CD \ACAD
  1030.  
  1031.                      ----------------------------------------
  1032.  
  1033.         Function:     cls                                    ELF Commands
  1034.  
  1035.         Synopsis:   clear (erase) the text screen
  1036.         Aliases:
  1037.         Arguments:
  1038.         Notes:
  1039.         Example:
  1040.  
  1041.                      ----------------------------------------
  1042.  
  1043.         Function:     c:                                     ELF Commands
  1044.  
  1045.         Synopsis:   logs to C: drive
  1046.         Aliases:
  1047.         Arguments:
  1048.  
  1049.  
  1050.         Elf Documentation                                          Page 7
  1051.  
  1052.  
  1053.         Notes:      Similar to DOS, ELF creates a command for each valid
  1054.                     disk drive, therefore, if drives A:,B:,C:, and D: are
  1055.                     valid drives, then any of those drives can be logged
  1056.                     by entering its drive letter and a colon. Elf will
  1057.                     not log to a drive that is not ready (eg floppy drive
  1058.                     door open)
  1059.         Example:
  1060.  
  1061.                      ----------------------------------------
  1062.  
  1063.         Function:     dcopy                                  ELF Commands
  1064.  
  1065.         Synopsis:   copy DOS file(s)
  1066.         Aliases:
  1067.         Arguments:  from      filespec to copy from (can be a wildcard)
  1068.                     to        filename or directory to copy to
  1069.         Notes:      dcopy performs a "double buffered" (eg fast) file
  1070.                     copy and prints from and to filenames as they are
  1071.                     copied
  1072.         Example:    dcopy c:\acad\*.doc d:\temp
  1073.  
  1074.                      ----------------------------------------
  1075.  
  1076.         Function:     derase                                 ELF Commands
  1077.  
  1078.         Synopsis:   erase / delete DOS file(s)
  1079.         Aliases:    ddel
  1080.         Arguments:  filespec  filespec to erase (can be a wildcard)
  1081.         Notes:      prints filenames as they are deleted
  1082.         Example:    derase c:\acad\*.bak
  1083.  
  1084.                      ----------------------------------------
  1085.  
  1086.         Function:     dir                                    ELF Commands
  1087.  
  1088.         Synopsis:   prints a file directory list
  1089.         Aliases:    ddir
  1090.         Arguments:  filespec  optional wildcard filespec (eg *.DWG)
  1091.                     /W        optional switch, prints wide (five
  1092.                               filenames per line)
  1093.         Notes:
  1094.         Example:    ddir *.doc
  1095.  
  1096.                      ----------------------------------------
  1097.  
  1098.         Function:     drename                                ELF Commands
  1099.  
  1100.         Synopsis:   rename / move file(s)
  1101.         Aliases:    dmove
  1102.         Arguments:  from      filespec to move from (can be a wildcard)
  1103.                     to        filename or directory to move to
  1104.  
  1105.  
  1106.         Elf Documentation                                          Page 8
  1107.  
  1108.  
  1109.         Notes:      destination must be the same device
  1110.         Example:    dmove c:\acad\*.doc c:\temp
  1111.  
  1112.                      ----------------------------------------
  1113.  
  1114.         Function:     elf                                    ELF Commands
  1115.  
  1116.         Synopsis:   displays a list of all ELF commands and functions
  1117.         Aliases:
  1118.         Arguments:
  1119.         Notes:      uses the ELF browser to display help for all ELF
  1120.                     commands and functions (see look).
  1121.         Example:
  1122.  
  1123.                      ----------------------------------------
  1124.  
  1125.         Function:     ff                                     ELF Commands
  1126.  
  1127.         Synopsis:   find file(s) on the AutoCAD library path and DOS path
  1128.         Aliases:
  1129.         Arguments:
  1130.         Notes:      searches for file(s) in the following sequence:
  1131.                     1 -       The current directory, the real current
  1132.                               directory, which may not be on the AutoCAD
  1133.                               library path if you have changed
  1134.                               directories after starting AutoCAD.
  1135.                     2 -       the AutoCAD library path using AutoCAD's
  1136.                               (findfile) function.
  1137.                     3 -       the DOS path
  1138.         Example:    ff *.sty
  1139.  
  1140.                      ----------------------------------------
  1141.  
  1142.         Function:     look                                   ELF Commands
  1143.  
  1144.         Synopsis:   display ASCII file(s) to the screen using the ELF
  1145.                     browser
  1146.         Aliases:
  1147.         Arguments:  filespec  file(s) to display
  1148.  
  1149.  
  1150.         Elf Documentation                                          Page 9
  1151.  
  1152.  
  1153.         Notes:      look loads each file matching the filespec into a
  1154.                     memory buffer and displays each using the internal
  1155.                     full screen browser. The cursor keys can be used to
  1156.                     view the file contents. The file can also be printed.
  1157.                     If no filename is specified, look will call
  1158.                     (wgetfile) where the user can select a file. Key
  1159.                     assignments in the browser are as follows:
  1160.                     Key       Function        
  1161.                     F1        Help
  1162.                     F2        text search (case insensitive)
  1163.                     Esc       Quit all files
  1164.                     Q/X/E     Quit / Exit file
  1165.                     Alt-P     print the entire contents of the buffer to
  1166.                               PRN
  1167.                     Home      Top of file
  1168.                     End       Bottom of file
  1169.                     Up        Up one line
  1170.                     Dn        Down one line
  1171.                     PgUp      Up one page
  1172.                     PgDn and
  1173.                     other keys  Down one page
  1174.         Example:    look c:\acad\*.doc
  1175.  
  1176.                      ----------------------------------------
  1177.  
  1178.         Function:     mkdir                                  ELF Commands
  1179.  
  1180.         Synopsis:   create a directory
  1181.         Aliases:    md, dmd
  1182.         Arguments:  directory name
  1183.         Notes:
  1184.         Example:    MD C:\ACAD\TEMPDIR
  1185.  
  1186.                      ----------------------------------------
  1187.  
  1188.         Function:     password                               ELF Commands
  1189.  
  1190.         Synopsis:   register ELF with your password (obtain from Mountain
  1191.                     Software)
  1192.         Aliases:
  1193.         Arguments:
  1194.         Notes:      Once the elf password is entered, the delay messages
  1195.                     will not appear. Passwords are provided to those who
  1196.                     purchase ELF.
  1197.         Example:
  1198.  
  1199.                      ----------------------------------------
  1200.  
  1201.         Function:     rmdir                                  ELF Commands
  1202.  
  1203.         Synopsis:   remove (delete) a directory
  1204.         Aliases:    rd, drd
  1205.         Arguments:
  1206.  
  1207.  
  1208.         Elf Documentation                                         Page 10
  1209.  
  1210.  
  1211.         Notes:      the directory must be empty
  1212.         Example:    RD C:\ACAD\TEMPDIR
  1213.  
  1214.                      ----------------------------------------
  1215.  
  1216.         Function:     sd                                     ELF Commands
  1217.  
  1218.         Synopsis:   set default disk drive
  1219.         Aliases:    dsd
  1220.         Arguments:
  1221.         Notes:      ELF also defines all valid drives as commands (eg A:,
  1222.                     B:, C:, D:, etc).
  1223.         Example:
  1224.  
  1225.                      ----------------------------------------
  1226.  
  1227.         Function:     symbol                                 ELF Commands
  1228.  
  1229.         Synopsis:   displays the value of an AutoLISP symbol
  1230.         Aliases:
  1231.         Arguments:  sym       symbol name
  1232.         Notes:      (release 12 only) Symbol name can not be an AutoLISP
  1233.                     expression. Symbols of type Subr or Exsubr can not be
  1234.                     displayed. See the command "look" for a description
  1235.                     of the ELF browser.
  1236.         Example:    (setq symlist (qsort(atoms-family 1)))
  1237.                     symbol symlist
  1238.  
  1239.                      ----------------------------------------
  1240.  
  1241.         Function:     ver                                    ELF Commands
  1242.  
  1243.         Synopsis:   prints ELF, DOS and AutoCAD version numbers
  1244.         Aliases:
  1245.         Arguments:
  1246.         Notes:
  1247.         Example:
  1248.  
  1249.                      ----------------------------------------
  1250.  
  1251.         Function:     what                                   ELF Commands
  1252.  
  1253.         Synopsis:   a compact "LIST" command to display entity values
  1254.         Aliases:
  1255.         Arguments:  ss        a selection set
  1256.         Notes:      "what" prompts for a selection set, the user can
  1257.                     specify a selection set using any of AutoCAD's
  1258.                     selection methods
  1259.         Example:
  1260.  
  1261.                      ----------------------------------------
  1262.  
  1263.  
  1264.         Elf Documentation                                         Page 11
  1265.  
  1266.  
  1267.  
  1268.         AutoLISP Functions
  1269.  
  1270.         Optional Parameters
  1271.  
  1272.         The ELF  library utilizes  optional parameters  for  many of  its
  1273.         functions. Optional  parameters assume  a default  value when  no
  1274.         specific value is  specified in the  function call. For  example,
  1275.         the  ELF function  (beep) with  no parameters  will sound  the PC
  1276.         speaker at a  frequency of 440 hertz for 0.5  seconds by default.
  1277.         Or,  you  can specify  the  frequency  alone  (beep 800)  or  the
  1278.         frequency and time, (beep 800 1.0). You can not, however, specify
  1279.         the second parameter without specifying the first.
  1280.  
  1281.         Variable Parameters
  1282.  
  1283.         Some functions also accept  a variable number of  parameters. For
  1284.         example,  the  function  (printf format  ...)  requires  a format
  1285.         parameter, but  additional parameters  are required  only if  the
  1286.         format  contains  variable  specifier.  (printf "\nHello  World")
  1287.         requires only the  format parameter  but (printf "Name:  %10.10s,
  1288.         Age: %2d" name age) requires two additional  parameters to supply
  1289.         the required values.
  1290.  
  1291.         Data Types
  1292.  
  1293.         The following  pneumonics are  used to denote  data types  in ELF
  1294.         functions.
  1295.  
  1296.         Pneumonic Data Type       Description
  1297.         -------------------------------------------------------------
  1298.         <int>     integer         signed short Integer
  1299.         <real>    real            double precision float
  1300.         <str>     string          character string
  1301.         <char>    integer         a character ascii value
  1302.         <list>    list            AutoLISP list
  1303.         <slist>   string list     list of strings
  1304.         <fspec)   string          filespec string
  1305.         <path>    string          directory path
  1306.         <drive>   string          single character string drive letter
  1307.         <dir>     string          directory
  1308.         <fn>      string          file name
  1309.         <ext>     string          file extension
  1310.         <disk>    integer         integer disk number (A=1)
  1311.         <col>     integer         screen column (X) position
  1312.         <row>     integer         screen row (Y) position
  1313.         <attr>    integer         screen color attribute
  1314.         <pt>      point           a list of two or three reals
  1315.         <cen>     point           "
  1316.         <rad>     real            radius units
  1317.         <ang>     real            angle in radians
  1318.         <layer>   string          an AutoCAD layer
  1319.         <symbol>  symbol          an AutoLISP symbol (atom or list)
  1320.  
  1321.  
  1322.         ELF Functions                                             page 12
  1323.  
  1324.  
  1325.         <ss>      sel set         AutoCAD selection set
  1326.         <mat>     list            A 4 X 4 transformation matrix as a list
  1327.                                   of  4  lists  each  containing  4  real
  1328.                                   values.
  1329.  
  1330.  
  1331.         Return Values
  1332.  
  1333.         ELF functions can  return any of the primary data  types (eg int,
  1334.         real, string, and nil) and lists. AutoCAD 386  does not support a
  1335.         long integer  data type, therefore some ELF  functions that would
  1336.         return  a long  will  return a  real value.  The  function (rand)
  1337.         returns real values from a long integer result.
  1338.  
  1339.         Many functions return lists of values. The values of the list can
  1340.         be retrieved using (nth) as well as (car), (cdr), and up  to four
  1341.         levels of concatenations of (car) and (cadr) as follows:
  1342.  
  1343.         (nth 0 lst)    (car list)     ;first element
  1344.         (nth 1 lst)    (cadr list)    ;second element
  1345.         (nth 2 lst)    (caddr list)   ;third element
  1346.         (nth 3 lst)    (cadddr list)  ;fourth element
  1347.         (nth 4 lst)    (caddddr list) ;fifth element
  1348.         (nth 5 lst)                   ;fifth element, etc
  1349.  
  1350.         Many functions  that are  converted C  functions will return  nil
  1351.         instead of 0 to indicate a False result. This  allows testing for
  1352.         falsity in one step. For example:
  1353.  
  1354.         (if(isascii ch)(doit)) 
  1355.  
  1356.         is much simpler than:
  1357.  
  1358.         (if(/= 0 (isascii ch))(doit))
  1359.  
  1360.  
  1361.         Video Functions
  1362.  
  1363.         The ELF  video  system  is  a collection  of  fast  and  flexible
  1364.         functions that  write directly  to the  text screen  video screen
  1365.         buffer.
  1366.  
  1367.         The function printf, from of the C function  library, is included
  1368.         in  two  forms. The  first,  (printf) uses  the  AutoCAD internal
  1369.         printf function. Text printed with  this function will "stick" if
  1370.         the user  presses <F1> to  flipscreen to the  graphics screen and
  1371.         back to the text screen. AutoCAD uses it's own text screen buffer
  1372.         to save the screen on a single monitor setup. 
  1373.  
  1374.         The function  (scr_printf), as well  as many of  the other screen
  1375.         write functions, writes directly to the video buffer,  and is not
  1376.         saved  to AutoCAD's internal buffer. It  is much faster, but will
  1377.         disappear  when the user flips screen  to the graphics screen and
  1378.  
  1379.  
  1380.         ELF Functions                                             page 13
  1381.  
  1382.  
  1383.         then returns to the text screen. (scr_printf) also prints using a
  1384.         color attribute. 
  1385.  
  1386.         The  color attribute is set with  the (set_color) function or, in
  1387.         release 12  the symbol "color"  can be set to  the selected color
  1388.         attribute. The internal color variable is also used  by the other
  1389.         screen write functions if no color attribute is  specified in the
  1390.         optional  attribute  function  parameter.   The  file  COLORS.LSP
  1391.         contains  symbolic names  for  the color  attributes  and can  be
  1392.         loaded within any AutoLISP program to define the color symbols.
  1393.  
  1394.                      ----------------------------------------
  1395.  
  1396.         Function:     box                                           Video
  1397.  
  1398.         Synopsis:   draws a box (rectangle) on the text screen using
  1399.                     graphic ascii characters.
  1400.         Prototype:  (box col row ecol erow attr btype)
  1401.         Arguments:  <int>     col  upper left corner column position
  1402.                     <int>     row  upper left corner row position
  1403.                     <int>     ecol                lower right corner
  1404.                                                   column position
  1405.                     <int>     erow                lower right corner row
  1406.                                                   position
  1407.                     <int>     attr                optional color
  1408.                                                   attribute [default
  1409.                                                   color symbol]
  1410.                     <int>     btype               optional border type
  1411.                                                   [default single line]
  1412.         Returns:    none
  1413.         Notes:      does not erase the area inside the box
  1414.         Example:    (box 10 2 70 18 23 1)
  1415.  
  1416.                      ----------------------------------------
  1417.  
  1418.         Function:     cls                                           Video
  1419.  
  1420.         Synopsis:   clear text screen to optional color attribute
  1421.         Prototype:  (cls attr)
  1422.         Arguments:  <int>     attr                optional color
  1423.                                                   attribute
  1424.         Returns:    none
  1425.         Notes:
  1426.         Example:    (cls 23) ;;; clear screen using light grey on blue
  1427.                     attribute
  1428.  
  1429.                      ----------------------------------------
  1430.  
  1431.         Function:     get_video                                     Video
  1432.  
  1433.         Synopsis:   get current text screen video parameters
  1434.         Prototype:  (get_video)
  1435.         Arguments:  none
  1436.  
  1437.  
  1438.         ELF Functions                                             page 14
  1439.  
  1440.  
  1441.         Returns:    <list>
  1442.                     cols      <int>               width of text screen
  1443.                                                   (usually 80)
  1444.                     rows      <int>               height of text screen
  1445.                                                   (usually 25)
  1446.                     mode      <int>               video mode
  1447.                     page      <int>               video page
  1448.         Notes:
  1449.         Example:    (setq vid      (get_video)
  1450.                               cols                (car vid)
  1451.                               rows                (cadr vid))
  1452.  
  1453.                      ----------------------------------------
  1454.  
  1455.         Function:     printf                                        Video
  1456.  
  1457.         Synopsis:   formatted "C" type print to text screen or graphics
  1458.                     command prompt area
  1459.         Prototype:  (printf format ...)
  1460.         Arguments:  format    <string>            conversion
  1461.                                                   specification string
  1462.         Returns:    ...                           a <string>, <int> or
  1463.                                                   <float> arguments for
  1464.                                                   each format specifier
  1465.                                                   in the format parameter
  1466.         Notes:      see a "C" language text or compiler library
  1467.                     documentation
  1468.         Example:    (printf "%-10s%10.2f  %d" strvar floatvar intvar)
  1469.  
  1470.                      ----------------------------------------
  1471.  
  1472.         Function:     prts                                          Video
  1473.  
  1474.         Synopsis:   fast write to text screen at col, row position with
  1475.                     optional attribute
  1476.         Prototype:  (prts col row string attr)
  1477.         Arguments:  col       <int>               screen column position
  1478.                     row       <int>               screen row position
  1479.                     string    <str>               text string
  1480.                     attr      <int>               optional color
  1481.                                                   attribute
  1482.         Returns:    none
  1483.         Notes:      uses direct video buffer write for speed
  1484.         Example:    (prts 40 10 "Hello World" 23)
  1485.  
  1486.                      ----------------------------------------
  1487.  
  1488.         Function:     puts                                          Video
  1489.  
  1490.         Synopsis:   fast write to text screen at cursor position with
  1491.                     optional attribute
  1492.         Prototype:  (puts string attr)
  1493.  
  1494.  
  1495.         ELF Functions                                             page 15
  1496.  
  1497.  
  1498.         Arguments:  string    <str>               text string
  1499.                     attr      <int>               optional color
  1500.                                                   attribute
  1501.         Returns:    none
  1502.         Notes:      uses direct video buffer write for speed
  1503.         Example:    (puts "Hello World" 23)
  1504.  
  1505.                      ----------------------------------------
  1506.  
  1507.         Function:     restore_screen                                Video
  1508.  
  1509.         Synopsis:   restores a previously captured text screen
  1510.         Prototype:  (restore_screen)
  1511.         Arguments:  none
  1512.         Returns:    1 if successful, nil otherwise
  1513.         Notes:      the cursor position and size are not restored (use
  1514.                     get_cursor/set_cursor)
  1515.         Example:    see save_screen
  1516.  
  1517.                      ----------------------------------------
  1518.  
  1519.         Function:     save_screen                                   Video
  1520.  
  1521.         Synopsis:   captures the contents of the text screen to a memory
  1522.                     buffer
  1523.         Prototype:  (save_screen)
  1524.         Arguments:  none
  1525.         Returns:    1 if successful, nil otherwise
  1526.         Notes:      only one buffer is allocated, subsequent use will
  1527.                     overwrite any previous contents of the buffer
  1528.         Example:    (save_screen)                 ;;; take a picture of
  1529.                                                   the screen
  1530.                     ;;; do something that messes up the screen
  1531.                     (restore_screen)              ;;; put it back the way
  1532.                                                   that it was
  1533.  
  1534.                      ----------------------------------------
  1535.  
  1536.         Function:     scr_fill                                      Video
  1537.  
  1538.         Synopsis:   fill a rectangle of the text screen with a character
  1539.                     and color attribute
  1540.         Prototype:  (scr_fill col row cols rows ch attr)
  1541.         Arguments:  col       <int>               upper left column
  1542.                                                   position
  1543.                     row       <int>               upper left row position
  1544.                     cols      <int>               lower right column
  1545.                                                   position
  1546.                     rows      <int>               lower right row
  1547.                                                   position
  1548.                     ch        <int>               character as an integer
  1549.                     attr      <int>               color attribute
  1550.         Returns:    none
  1551.  
  1552.  
  1553.         ELF Functions                                             page 16
  1554.  
  1555.  
  1556.         Notes:
  1557.         Example:    (setq vid (get_video) vcols (car vid) vrows (cadr
  1558.                     vid))
  1559.                     (scr_fill 0 0 vcols vrows (ascii "░") 23) ;;;
  1560.                               fill entire screen with patterned
  1561.                               lightgrey on blue
  1562.  
  1563.                      ----------------------------------------
  1564.  
  1565.         Function:     scr_printf                                    Video
  1566.  
  1567.         Synopsis:   formatted "C" type print to text screen using direct
  1568.                     video buffer write
  1569.         Prototype:  (scr_printf format ...)
  1570.         Arguments:  format    <string>            conversion
  1571.                                                   specification string
  1572.         Returns:    ...                           any number of <string>,
  1573.                                                   <int> or <float>
  1574.                                                   arguments
  1575.         Notes:      see printf
  1576.         Example:    see printf
  1577.  
  1578.                      ----------------------------------------
  1579.  
  1580.         Function:     set_color                                     Video
  1581.  
  1582.         Synopsis:   sets the internal "color" variable for use by
  1583.                     subsequent uses of routines which can use the default
  1584.                     color (r11)
  1585.         Prototype:  (set_color attr)
  1586.         Arguments:  attr      <int>               color attribute
  1587.         Returns:    for release 12 the AutoLISP symbol COLOR is used to
  1588.                     set the default color
  1589.         Notes:      (set_color 23)
  1590.         Example:
  1591.  
  1592.                      ----------------------------------------
  1593.  
  1594.         Cursor Functions
  1595.  
  1596.         The cursor functions provide a means to control  the location and
  1597.         appearance  of the  screen  cursor. Several  of the  video screen
  1598.         write functions print at the  cursor location, (gotoxy) positions
  1599.         the  cursor  and  (getxy) returns  the  current  cursor location.
  1600.         (get_cursor) returns the  cursor shape and (set_cursor)  sets the
  1601.         cursor  shape (start and  ending scan  lines). (set_cursor  32 0)
  1602.         will also hide the cursor.
  1603.  
  1604.                      ----------------------------------------
  1605.  
  1606.  
  1607.         ELF Functions                                             page 17
  1608.  
  1609.  
  1610.         Function:     get_cursor                                   Cursor
  1611.  
  1612.         Synopsis:   get cursor size / shape
  1613.         Prototype:  (get_cursor)
  1614.         Arguments:
  1615.         Returns:    <list>
  1616.                     start     <int>               start scan line
  1617.                     end       <int>               end scan line
  1618.         Notes:
  1619.         Example:    (setq save_cur (get_cursor)) ;;; save cursor shape
  1620.  
  1621.                      ----------------------------------------
  1622.  
  1623.         Function:     getxy                                        Cursor
  1624.  
  1625.         Synopsis:   get cursor screen coordinates
  1626.         Prototype:  (getxy)
  1627.         Arguments:
  1628.         Returns:    <list>
  1629.                     col       <int>               screen column position
  1630.                     row       <int>               screen row position
  1631.         Notes:
  1632.         Example:    (setq pos (getxy) col (car pos) row (cadr pos))
  1633.  
  1634.                      ----------------------------------------
  1635.  
  1636.         Function:     gotoxy                                       Cursor
  1637.  
  1638.         Synopsis:   position the screen cursor
  1639.         Prototype:  (gotoxy col row)
  1640.         Arguments:  col       <int>               screen column (x)
  1641.                                                   position
  1642.                     row       <int>               screen row (y) position
  1643.         Returns:
  1644.         Notes:
  1645.         Example:    (gotoxy 0 0) ;;; home cursor
  1646.  
  1647.                      ----------------------------------------
  1648.  
  1649.         Function:     set_cursor                                   Cursor
  1650.  
  1651.         Synopsis:   set cursor size; start to end scan lines
  1652.         Prototype:  (set_cursor start end)
  1653.         Arguments:  start     <int>               start scan line
  1654.                     end       <int>               end scan line
  1655.         Returns:
  1656.  
  1657.  
  1658.         ELF Functions                                             page 18
  1659.  
  1660.  
  1661.         Notes:      full cursor size is different depending on video
  1662.                     mode, the CGA cursor is 8 scan lines high, the
  1663.                     monochrome ,EGA, and VGA cursors are 14 scan lines
  1664.                     high. Specifying 32 as the start scan line will hide
  1665.                     the cursor.
  1666.         Example:    (set_cursor 0 13)  ;;; full block cursor
  1667.                     (set_cursor 12 13) ;;; normal cursor
  1668.                     (set_cursor 32 0)  ;;; hide cursor
  1669.  
  1670.                      ----------------------------------------
  1671.  
  1672.         Window Functions
  1673.  
  1674.         The ELF text screen window system rivals many commercial compiled
  1675.         language function libraries. It provides  the programmer with the
  1676.         tools to  produce  a professional  "look  and feel"  to  AutoLISP
  1677.         programs.
  1678.  
  1679.         When a window is opened, the screen text under the window and its
  1680.         border and shadow are saved. When the window is closed the screen
  1681.         is restored to its previous state. There is no practical limit to
  1682.         the number of windows open at on time.
  1683.  
  1684.         Only  the topmost  window  can be  written  to  using the  window
  1685.         writing routines (eg wputs, wprts, etc).  If you wish to write to
  1686.         a window other  than the topmost window,  you can do so,  but you
  1687.         must use the screen writing  routines, calculate cursor position,
  1688.         and otherwise maintain the window yourself.
  1689.  
  1690.         When no color attribute is specified in a  window write function,
  1691.         the window  attribute will  be used  by default,  not the  symbol
  1692.         "color" as used by screen writing functions.
  1693.  
  1694.                      ----------------------------------------
  1695.  
  1696.         Function:     set_menu_help                                Window
  1697.  
  1698.         Synopsis:   sets the user help string list for wmenu
  1699.         Prototype:  (set_menu_help <slist>)
  1700.         Arguments:  <slist>   a string list to be displayed when the F1
  1701.                               key is pressed while in (wmenu). The first
  1702.                               item in the list will be the help window
  1703.                               title.
  1704.         Returns:
  1705.  
  1706.  
  1707.         ELF Functions                                             page 19
  1708.  
  1709.  
  1710.         Notes:      In release 12 or higher the symbol MENU_HELP can be
  1711.                     used to set the help string. In release 12
  1712.                     (set_menu_help) will also set this symbol. The symbol
  1713.                     MENU_HELP can be local to a particular function or
  1714.                     global in scope.
  1715.  
  1716.                     The user can display the default help screen by
  1717.                     pressing F1 the second time.
  1718.         Example:    (set_menu_help '("[ My Help Screen ]" "" "This is my
  1719.                     help message"))
  1720.  
  1721.                      ----------------------------------------
  1722.  
  1723.         Function:     wclose                                       Window
  1724.  
  1725.         Synopsis:   closes the top window restoring the screen under the
  1726.                     window
  1727.         Prototype:  (wclose)
  1728.         Arguments:  none
  1729.         Returns:    number of remaining open windows if successful or nil
  1730.         Notes:
  1731.         Example:
  1732.  
  1733.                      ----------------------------------------
  1734.  
  1735.         Function:     wcloseall                                    Window
  1736.  
  1737.         Synopsis:   closes all windows
  1738.         Prototype:  (wcloseall)
  1739.         Arguments:  none
  1740.         Returns:
  1741.         Notes:      use at the end of programs to close any remaining
  1742.                     open windows
  1743.         Example:
  1744.  
  1745.                      ----------------------------------------
  1746.  
  1747.         Function:     wclreol                                      Window
  1748.  
  1749.         Synopsis:   erase from window cursor to end of line
  1750.         Prototype:  (wclreol)
  1751.         Arguments:
  1752.         Returns:    none
  1753.         Notes:
  1754.         Example:
  1755.  
  1756.                      ----------------------------------------
  1757.  
  1758.         Function:     wcls                                         Window
  1759.  
  1760.         Synopsis:   clear window to optional color attribute
  1761.         Prototype:  (wcls attr)
  1762.  
  1763.  
  1764.         ELF Functions                                             page 20
  1765.  
  1766.  
  1767.         Arguments:  <int>     attr                optional color
  1768.                                                   attribute
  1769.         Returns:    none
  1770.         Notes:
  1771.         Example:    (wcls 23) ;;; clear window using light grey on blue
  1772.                     attribute
  1773.  
  1774.                      ----------------------------------------
  1775.  
  1776.         Function:     werase_line                                  Window
  1777.  
  1778.         Synopsis:   erase a line of text from a window
  1779.         Prototype:  (werase_line line)
  1780.         Arguments:  line      <int>               window row to erase
  1781.         Returns:    none
  1782.         Notes:
  1783.         Example:    (werase_line 2) ;;; erase line 2
  1784.  
  1785.                      ----------------------------------------
  1786.  
  1787.         Function:     wgetstr                                      Window
  1788.  
  1789.         Synopsis:   open a window centered on the text screen, prints a
  1790.                     prompt on the top border and gets string input.
  1791.         Prototype:  (wgetstr prompt default length wattr battr btype)
  1792.         Arguments:  prompt    <string>            prompt string
  1793.                     default   <string>            optional default string
  1794.                                                   / string to edit
  1795.                     len       <int>               optional string length
  1796.                                                   (default = 78)
  1797.                     wattr     <int>               optional window
  1798.                                                   attribute (default =
  1799.                                                   color symbol)
  1800.                     battr     <int>               optional border
  1801.                                                   attribute (optional =
  1802.                                                   wattr)
  1803.                     btype     <int>               optional border type
  1804.                                                   (default = double)
  1805.         Returns:    the edited string or nil if the string is empty
  1806.         Notes:      see strget and wpopup
  1807.         Example:    (wgetstr "Enter text" "Hello World" 60 23 23 33)
  1808.  
  1809.                      ----------------------------------------
  1810.  
  1811.         Function:     wgetdrive                                    Window
  1812.  
  1813.         Synopsis:   select a disk drive from a menu, all valid drives are
  1814.                     listed with their respective drive type (eg
  1815.                     removable/floppy, fixed, network, and redirected
  1816.                     devices)
  1817.         Prototype:  (wgetdrive col row wattr battr hattr btype)
  1818.  
  1819.  
  1820.         ELF Functions                                             page 21
  1821.  
  1822.  
  1823.         Arguments:  col       <int>               optional upper left
  1824.                                                   column position
  1825.                                                   (default = centered)
  1826.                     row       <int>               optional upper left row
  1827.                                                   position (default =
  1828.                                                   centered)
  1829.                     wattr     <int>               optional window
  1830.                                                   attribute (default =
  1831.                                                   color variable)
  1832.                     battr     <int>               optional border
  1833.                                                   attribute
  1834.                     hattr     <int>               optional highlight
  1835.                                                   (cursor) bar attribute
  1836.                     btype     <int>               optional border type
  1837.         Returns:    the disk drive as an integer (A:=1, B:=2, etc)
  1838.         Notes:
  1839.         Example:    (setq drive (wgetdrive 10 5))
  1840.  
  1841.                      ----------------------------------------
  1842.  
  1843.         Function:     wgetfile                                     Window
  1844.  
  1845.         Synopsis:   select a file from a menu of DOS files from the
  1846.                     current directory. The user can change directories
  1847.                     and access all available disk drives.
  1848.         Prototype:  (wgetfile filespec fileattr col row wattr battr hattr
  1849.                     btype)
  1850.         Arguments:  filespec  <string>            wildcard filespec (eq
  1851.                                                   *.DAT)
  1852.                     fileattr  <int>               file attribute mask
  1853.                                                   (see findfirst)
  1854.                     col       <int>               optional upper left
  1855.                                                   column position
  1856.                                                   (default = -1 centered)
  1857.                     row       <int>               optional upper left row
  1858.                                                   position (default = -1
  1859.                                                   centered)
  1860.                     wattr     <int>               optional window
  1861.                                                   attribute (default =
  1862.                                                   color variable)
  1863.                     battr     <int>               optional border
  1864.                                                   attribute
  1865.                     hattr     <int>               optional highlight
  1866.                                                   (cursor) bar attribute
  1867.                     btype     <int>               optional border type
  1868.         Returns:    the full qualified pathname of the selected file or
  1869.                     nil if <Esc> is pressed.
  1870.         Notes:      The drive select menu is activated by pressing <Alt-
  1871.                     D>.
  1872.         Example:    (setq filename (wgetfile "*.TXT" 33 -1 -1 23 23 70
  1873.                     17)
  1874.  
  1875.                      ----------------------------------------
  1876.  
  1877.  
  1878.         ELF Functions                                             page 22
  1879.  
  1880.  
  1881.         Function:     wgetxy                                       Window
  1882.  
  1883.         Synopsis:   get window screen position
  1884.         Prototype:  (wgetxy)
  1885.         Arguments:  none
  1886.         Returns:    <list>
  1887.                     col       <int>               window column position
  1888.                     row       <int>               window row position
  1889.         Notes:
  1890.         Example:    (setq 
  1891.                       wcur (getxy)
  1892.                       wcol (car wcur)             ;;; cursor column
  1893.                       wrow (cadr wcur)            ;;; cursor row
  1894.                     )
  1895.  
  1896.                      ----------------------------------------
  1897.  
  1898.         Function:     wgotoxy                                      Window
  1899.  
  1900.         Synopsis:   move window cursor
  1901.         Prototype:  (wgotoxy col row)
  1902.         Arguments:  col       <int>               window column position
  1903.                     row       <int>               window row position
  1904.         Returns:    none
  1905.         Notes:
  1906.         Example:    (wgotoxy 0 0) ;;; home cursor in window
  1907.  
  1908.                      ----------------------------------------
  1909.  
  1910.         Function:     winfo                                        Window
  1911.  
  1912.         Synopsis:   gets the top window size and position
  1913.         Prototype:  (winfo)
  1914.         Arguments:  none
  1915.         Returns:    <list>
  1916.                     col       <int>               upper left column
  1917.                                                   position
  1918.                     row       <int>               upper left row position
  1919.                     cols      <int>               lower right column
  1920.                                                   position
  1921.                     rows      <int>               lower right row
  1922.                                                   position
  1923.         Notes:
  1924.         Example:    (setq     w    (winfo)
  1925.                               wcol                (car w)
  1926.                               wrow                (cadr w)
  1927.                               wcols               (caddr w)
  1928.                               wrows               (cadddr w))
  1929.  
  1930.                      ----------------------------------------
  1931.  
  1932.  
  1933.         ELF Functions                                             page 23
  1934.  
  1935.  
  1936.         Function:     wmenu                                        Window
  1937.  
  1938.         Synopsis:   opens a centered window and displays a menu. The user
  1939.                     can then select one of the displayed items.
  1940.         Prototype:  (wmenu slist wattr battr hattr btype shadow title)
  1941.         Arguments:  slist     <list>              list of strings to
  1942.                                                   display in the menu
  1943.                     col       <int>               optional upper left
  1944.                                                   column position
  1945.                                                   (default = centered)
  1946.                     row       <int>               optional upper left row
  1947.                                                   position (default =
  1948.                                                   centered)
  1949.                     wattr     <int>               optional window color
  1950.                                                   attribute (default =
  1951.                                                   "color" symbol)
  1952.                     battr     <int>               optional border
  1953.                                                   attribute (default =
  1954.                                                   wattr)
  1955.                     hattr     <int>               optional highlight bar
  1956.                                                   attribute (default =
  1957.                                                   reversed wattr)
  1958.                     btype     <int>               optional border type
  1959.                                                   (default = double line)
  1960.                     title     <string>            optional window title
  1961.         Returns:    <list>
  1962.                     <int>     0 based item number selected
  1963.                     <int>     keycode of key pressed to exit menu
  1964.  
  1965.  
  1966.         ELF Functions                                             page 24
  1967.  
  1968.  
  1969.         Notes:      If the list of items is longer that can be displayed
  1970.                     in one window then the user can page through the list
  1971.                     with the cursor keys. Keys are as follows:
  1972.                     Key       Meaning             
  1973.                     <Up>      move cursor up
  1974.                     <Down>    move cursor down
  1975.                     <PgUp>    move up one page
  1976.                     <PgDn>    move down one page
  1977.                     <Enter>   exit
  1978.                     <Ctrl-Enter>   exit
  1979.                     <Esc>     exit
  1980.                     <F1>      Display help screen. If the symbol
  1981.                               MENU_HELP is defined, its contents will be
  1982.                               displayed. The function (set_menu_help)
  1983.                               can be used to set MENU_HELP in release 10
  1984.                               or 11. The user can press F1 the second
  1985.                               time to display the default help text.
  1986.                     <End>     move to last item
  1987.                     <Home>    move to first item
  1988.                     <char>    any alphanumeric key will move the cursor
  1989.                               to the next item starting in that
  1990.                               character
  1991.         Example:    (setq 
  1992.                       item (wmenu '("Yes" "No") 23 23 1 1 "?"))
  1993.                       yn (car item)
  1994.                       key (cadr item)
  1995.                     )
  1996.                     (if(/= key EscKey) (doit) (exit))
  1997.  
  1998.                      ----------------------------------------
  1999.  
  2000.         Function:     wmsg                                         Window
  2001.  
  2002.         Synopsis:   opens a centered window, displays a message and
  2003.                     optionally waits for a keystroke and closes the
  2004.                     window
  2005.         Prototype:  (wmsg str wait attr battr btype)
  2006.         Arguments:  str       <string>            the message string
  2007.                     wait      <int>               optional, 1 = wait for
  2008.                                                   a keystroke then close
  2009.                                                   window (default) else
  2010.                                                   leave window open
  2011.                     wattr     <int>               optional window color
  2012.                                                   attribute (default =
  2013.                                                   color symbol)
  2014.                     wattr     <int>               optional border color
  2015.                                                   attribute (default =
  2016.                                                   wattr)
  2017.                     btype     <int>               optional border type
  2018.                                                   (default = double line
  2019.                                                   with drop shadow)
  2020.         Returns:    if wait=1 then keycode entered to close window is
  2021.                     returned
  2022.  
  2023.  
  2024.         ELF Functions                                             page 25
  2025.  
  2026.  
  2027.         Notes:
  2028.         Example:    (setq key (wmsg "Continue ?[Y/N]" 1 23 23 1))
  2029.  
  2030.                      ----------------------------------------
  2031.  
  2032.         Function:     wopen                                        Window
  2033.  
  2034.         Synopsis:   open a window on the text screen with specified
  2035.                     location, size, border, and colors; saving the area
  2036.                     under the window
  2037.         Prototype:  (wopen col row cols rows wattr battr btype)
  2038.         Arguments:  col       <int>               upper left column
  2039.                                                   position (-1 =
  2040.                                                   centered)
  2041.                     row       <int>               upper left row position
  2042.                                                   (-1 = centered)
  2043.                     cols      <int>               number of columns
  2044.                                                   (including border)
  2045.                     rows      <int>               number of rows
  2046.                                                   (including border)
  2047.                     wattr     <int>               optional window
  2048.                                                   attribute (default =
  2049.                                                   color variable)
  2050.                     battr     <int>               optional border
  2051.                                                   attribute
  2052.                     btype     <int>               optional border type:
  2053.                     Type      Meaning             
  2054.                     0         no border
  2055.                     1         single line
  2056.                     2         double line
  2057.                     3         double vertical
  2058.                     4         double horizontal
  2059.                     5         solid
  2060.                     btype + 8  = hilight upper left sides of border for
  2061.                     raised effect
  2062.                     btype + 16 = hilight lower right sides of border
  2063.                     btype + 32 = add drop shadow to right and lower sides
  2064.                     of window
  2065.  
  2066.         Returns:    <int>     the number of windows currently open
  2067.         Notes:      flips screen to the text screen
  2068.         Example:    (wopen 20 5 40 10 23 23 2)
  2069.  
  2070.                      ----------------------------------------
  2071.  
  2072.         Function:     wpopup                                       Window
  2073.  
  2074.         Synopsis:   open a window centered on the text screen
  2075.         Prototype:  (wpopup cols rows wattr battr)
  2076.  
  2077.  
  2078.         ELF Functions                                             page 26
  2079.  
  2080.  
  2081.         Arguments:  cols      <int>               number of column wide
  2082.                                                   (including border)
  2083.                     rows      <int>               number of rows high
  2084.                                                   (including border)
  2085.                     wattr     <int>               optional window
  2086.                                                   attribute (default =
  2087.                                                   color symbol)
  2088.                     battr     <int>               optional border
  2089.                                                   attribute (optional =
  2090.                                                   wattr)
  2091.                     btype     <int>               optional border type
  2092.                                                   (default = double)
  2093.         Returns:    the number of windows currently open
  2094.         Notes:
  2095.         Example:    (wpopup 40 10 23 23)
  2096.  
  2097.                      ----------------------------------------
  2098.  
  2099.         Function:     wprintf                                      Window
  2100.  
  2101.         Synopsis:   printf to window at window cursor position
  2102.         Prototype:  (wprintf format ...)
  2103.         Arguments:  see printf
  2104.         Returns:
  2105.         Notes:      see printf
  2106.         Example:
  2107.  
  2108.                      ----------------------------------------
  2109.  
  2110.         Function:     wprts                                        Window
  2111.  
  2112.         Synopsis:   write to window at col, row position with optional
  2113.                     attribute
  2114.         Prototype:  (wprts col row string attr)
  2115.         Arguments:  col       <int>               window column position
  2116.                     row       <int>               window row position
  2117.                     string    <str>               text string
  2118.                     attr      <int>               optional color
  2119.                                                   attribute
  2120.         Returns:    none
  2121.         Notes:
  2122.         Example:    (wprts 0 3 "Hello World" 23)
  2123.  
  2124.                      ----------------------------------------
  2125.  
  2126.         Function:     wputcen                                      Window
  2127.  
  2128.         Synopsis:   write a centered string to window at window cursor
  2129.                     row position
  2130.         Prototype:  (wputcen str)
  2131.         Arguments:  str       <string>            the string to print
  2132.         Returns:
  2133.  
  2134.  
  2135.         ELF Functions                                             page 27
  2136.  
  2137.  
  2138.         Notes:      cursor column position is ignored and the string is
  2139.                     centered within the window
  2140.         Example:
  2141.  
  2142.                      ----------------------------------------
  2143.  
  2144.         Function:     wputs                                        Window
  2145.  
  2146.         Synopsis:   write to window at window cursor position with
  2147.                     optional attribute
  2148.         Prototype:  (puts string attr)
  2149.         Arguments:  string    <str>               text string
  2150.                     attr      <int>               optional color
  2151.                                                   attribute
  2152.         Returns:    none
  2153.         Notes:
  2154.         Example:    (wputs "Hello World" 23)
  2155.  
  2156.                      ----------------------------------------
  2157.  
  2158.         Function:     wscroll                                      Window
  2159.  
  2160.         Synopsis:   scroll window text
  2161.         Prototype:  (wscroll dir start end lines)
  2162.         Arguments:  dir       <int>               direction; 0 = up
  2163.                                                   (default), 1 = down
  2164.                     start     <int>               start row to scroll
  2165.                                                   (default = 0)
  2166.                     end       <int>               end row  (default =
  2167.                                                   last window row)
  2168.                     line      <int>               optional number of
  2169.                                                   lines to scroll
  2170.                                                   (default = 1)
  2171.         Returns:    none
  2172.         Notes:
  2173.         Example:    (wscroll) ;;; scroll entire window up 1 line
  2174.                     (wscroll 1 0 2 1) ;;; scroll first 3 window rows up 1
  2175.                     line
  2176.  
  2177.  
  2178.                      ----------------------------------------
  2179.  
  2180.         Function:     wshadow                                      Window
  2181.  
  2182.         Synopsis:   adds a drop shadow to the top (last opened) window
  2183.         Prototype:  (wshadow attr)
  2184.         Arguments:  attr      <int>               color attribute
  2185.                                                   (default lightgrey on
  2186.                                                   black)
  2187.         Returns:
  2188.  
  2189.  
  2190.         ELF Functions                                             page 28
  2191.  
  2192.  
  2193.         Notes:
  2194.         Example:    (wshadow 23)
  2195.  
  2196.                      ----------------------------------------
  2197.  
  2198.         Function:     wtitle                                       Window
  2199.  
  2200.         Synopsis:   prints on the border of a window in one of 6
  2201.                     positions
  2202.         Prototype:  (wtitle <str> [<pos>])
  2203.         Arguments:  str       <string>            title message
  2204.                     pos       <int>               optional position to
  2205.                                                   place string
  2206.                     Value     Meaning             
  2207.                     0         top left (default)
  2208.                     1         top center
  2209.                     2         top right
  2210.                     3         bottom left
  2211.                     4         bottom center
  2212.                     5         bottom right
  2213.         Returns:
  2214.         Notes:      If no windows are open wtitle has no effect. Titles
  2215.                     will be trimmed to fit available space on the border.
  2216.         Example:    (wtitle "My Window" 1)
  2217.  
  2218.                      ----------------------------------------
  2219.  
  2220.         Keyboard Functions
  2221.  
  2222.         The ELF keyboard functions add both C library functions to read a
  2223.         character from  the keyboard and  functions to read  the keyboard
  2224.         directly. The function (getkey)  returns a unique value  for each
  2225.         key on  the PC keyboard.  The file  ELF.LSP contains symbols  for
  2226.         many (but  not all) of the PC function  and control keys. You can
  2227.         determine  the value  of  any key  by  entering  (getkey) at  the
  2228.         Command: prompt and then pressing the desired key.
  2229.  
  2230.         The  function  (key_stuff)  provides  a  means to  control  other
  2231.         programs when no other means exists to execute a command or  feed
  2232.         data to another command or program. The function is limited to 15
  2233.         characters unless you  have installed a  TSR keyboard handler  or
  2234.         driver which expands the size of the PC keyboard buffer.
  2235.  
  2236.                      ----------------------------------------
  2237.  
  2238.         Function:     getch                                           Key
  2239.  
  2240.         Synopsis:   get a character from the keyboard
  2241.         Prototype:  (getch)
  2242.         Arguments:
  2243.         Returns:    <int>     key character as an integer
  2244.  
  2245.  
  2246.         ELF Functions                                             page 29
  2247.  
  2248.  
  2249.         Notes:
  2250.         Example:    (setq char (chr(getch))) ;;; character as a string
  2251.  
  2252.                      ----------------------------------------
  2253.  
  2254.         Function:     getche                                          Key
  2255.  
  2256.         Synopsis:   get a character from the keyboard with echo
  2257.         Prototype:  (getche)
  2258.         Arguments:
  2259.         Returns:    <int>     key character as an integer
  2260.         Notes:      see getch
  2261.         Example:
  2262.  
  2263.                      ----------------------------------------
  2264.  
  2265.         Function:     getkey                                          Key
  2266.  
  2267.         Synopsis:   get a keystroke from the keyboard
  2268.         Prototype:  (getkey)
  2269.         Arguments:
  2270.         Returns:    <int>     keycode             The lower byte of
  2271.                                                   keycode contains the
  2272.                                                   key character and the
  2273.                                                   upper byte contains the
  2274.                                                   keyboard scancode.
  2275.         Notes:      The value returned by getkey is unique for (nearly)
  2276.                     every key on the PC keyboard. The file KEYS.LSP
  2277.                     contains a list of keycodes of cursor movement and
  2278.                     function keys. The keycode of any key can be
  2279.                     determined by executing (getkey) interactively.
  2280.         Example:    (setq 
  2281.                       c       (getkey)            ;;; the keycode
  2282.                       char    (chr(lobyte c))     ;;; key character as a
  2283.                                                   string
  2284.                       scode   (hibyte c)          ;;; keyboard scan code
  2285.                     )
  2286.  
  2287.                      ----------------------------------------
  2288.  
  2289.         Function:     kbhit                                           Key
  2290.  
  2291.         Synopsis:   checks the keyboard buffer for a waiting keystroke
  2292.         Prototype:  (kbhit)
  2293.         Arguments:
  2294.         Returns:    a non-zero value if a key is waiting
  2295.         Notes:
  2296.         Example:    (while (not(kbhit)))
  2297.  
  2298.                      ----------------------------------------
  2299.  
  2300.  
  2301.         ELF Functions                                             page 30
  2302.  
  2303.  
  2304.         Function:     key_clear                                       Key
  2305.  
  2306.         Synopsis:   clears the keyboard buffer of any pending keystrokes
  2307.         Prototype:  (key_clear)
  2308.         Arguments:
  2309.         Returns:
  2310.         Notes:
  2311.         Example:    (key_clear)    ;;; clear the keyboard
  2312.                     (setq key (getkey))           ;;; get a keystroke
  2313.  
  2314.                      ----------------------------------------
  2315.  
  2316.         Function:     key_ready                                       Key
  2317.  
  2318.         Synopsis:   returns immediately with a waiting key
  2319.         Prototype:  (key_ready)
  2320.         Arguments:
  2321.         Returns:    <int>     key                 or nil
  2322.         Notes:      key_ready checks the keyboard buffer and immediately
  2323.                     returns the next keycode (leaving it in the buffer)
  2324.                     or nil if no key is waiting
  2325.         Example:    (while (not(key_ready)))
  2326.  
  2327.                      ----------------------------------------
  2328.  
  2329.         Function:     key_stat                                        Key
  2330.  
  2331.         Synopsis:   gets the state of keyboard shift and other special
  2332.                     keys
  2333.         Prototype:  (key_stat)
  2334.         Arguments:
  2335.         Returns:    <int>     a bit coded field as follows:
  2336.                     Bit       Mask                Meaning
  2337.                                                   
  2338.                     0         1    Right shift key pressed
  2339.                     1         2    Left shift key presses
  2340.                     2         4    Ctrl key pressed
  2341.                     3         8    Alt key pressed
  2342.                     4         16   ScrollLock On
  2343.                     5         32   NumLock On
  2344.                     6         64   Capslock On
  2345.                     7         128  Insert On
  2346.         Notes:
  2347.         Example:
  2348.  
  2349.                      ----------------------------------------
  2350.  
  2351.         Function:     key_stuff                                       Key
  2352.  
  2353.         Synopsis:   "pushes" keys into the keyboard buffer
  2354.         Prototype:  (key_stuff str)
  2355.         Arguments:  str       <string>            up to 15 characters
  2356.         Returns:
  2357.  
  2358.  
  2359.         ELF Functions                                             page 31
  2360.  
  2361.  
  2362.         Notes:      stuffs the keyboard buffer to control "ill behaved"
  2363.                     programs. The DOS keyboard buffer can hold a maximum
  2364.                     of 15 keys, additional keys are ignored.
  2365.         Example:    (key_stuff ".QUIT\nY\n")
  2366.  
  2367.                      ----------------------------------------
  2368.  
  2369.         Directory Functions
  2370.  
  2371.         Elf contains a full suite of functions to read and manipulate the
  2372.         DOS file directory  system. In addition  to C library  functions,
  2373.         ELF  provides macro  functions  to return  a list  of  valid disk
  2374.         drives, directories, and files.
  2375.  
  2376.                      ----------------------------------------
  2377.  
  2378.         Function:     access                                    Directory
  2379.  
  2380.         Synopsis:   determines if a file exists and can be accessed by
  2381.                     mode
  2382.         Prototype:  (access path mode)
  2383.         Arguments:  <string> path
  2384.                     <int> mode:
  2385.                     Value     Test For            
  2386.                     0         existence only
  2387.                     1         read permission
  2388.                     2         write permission
  2389.                     3         read and write permission
  2390.         Returns:    1 if true, nil otherwise
  2391.         Notes:
  2392.         Example:    (access "C:\ACAD\FOO.DAT" 2)  ;;;checks for the
  2393.                                                   existence and write
  2394.                                                   permission
  2395.  
  2396.                      ----------------------------------------
  2397.  
  2398.         Function:     chdir                                     Directory
  2399.  
  2400.         Synopsis:   change disk directory
  2401.         Prototype:  (chdir path)
  2402.         Arguments:  path      <string>            DOS path
  2403.         Returns:    <string>  current directory after successful
  2404.                               execution or nil otherwise.
  2405.         Notes:      If a drive different from the current drive is
  2406.                     specified, the directory on the specified drive will
  2407.                     be changed. Does not log to a different drive.
  2408.         Example:    (chdir "\acad\dwgs")
  2409.  
  2410.                      ----------------------------------------
  2411.  
  2412.  
  2413.         ELF Functions                                             page 32
  2414.  
  2415.  
  2416.         Function:     chpath                                    Directory
  2417.  
  2418.         Synopsis:   change current disk drive and directory
  2419.         Prototype:  (chpath path)
  2420.         Arguments:  path      <string>            DOS path including
  2421.                                                   drive letter
  2422.         Returns:    <string> current directory after successful execution
  2423.                     or nil otherwise.
  2424.         Notes:
  2425.         Example:    (chpath "d:\dwgs")
  2426.  
  2427.                      ----------------------------------------
  2428.  
  2429.         Function:     disk_ready                                Directory
  2430.  
  2431.         Synopsis:   verifies that a removable (floppy) drive is ready and
  2432.                     readable
  2433.         Prototype:  (disk_ready drive)
  2434.         Arguments:  drive     <int>               drive to check (1=A:,
  2435.                                                   2=B:, etc)
  2436.         Returns:    1 if true or nil otherwise
  2437.         Notes:
  2438.         Example:    (disk_ready 1) ;;; verify that drive A: is ready
  2439.  
  2440.                      ----------------------------------------
  2441.  
  2442.         Function:     disk_type                                 Directory
  2443.  
  2444.         Synopsis:
  2445.         Prototype:  (disk_type drive)
  2446.         Arguments:  drive     <int>               drive to check (1=A:,
  2447.                                                   2=B:, etc)
  2448.         Returns:    0         removable (floppy) disk
  2449.                     1         fixed (hard) disk
  2450.                     2         network drive
  2451.                     3         redirected device
  2452.                     nil       invalid drive
  2453.         Notes:
  2454.         Example:
  2455.  
  2456.                      ----------------------------------------
  2457.  
  2458.         Function:     disk_valid                                Directory
  2459.  
  2460.         Synopsis:   verifies that a disk drive is a valid device (but not
  2461.                     necessarily ready if a removable/floppy drive)
  2462.         Prototype:  (disk_valid drive)
  2463.         Arguments:  drive     <int>               drive to check (1=A:,
  2464.                                                   2=B:, etc)
  2465.         Returns:    1 if true or nil otherwise
  2466.  
  2467.  
  2468.         ELF Functions                                             page 33
  2469.  
  2470.  
  2471.         Notes:
  2472.         Example:    (disk_valid 6) ;;; verify that drive F: is valid
  2473.  
  2474.                      ----------------------------------------
  2475.  
  2476.         Function:     erasefile                                 Directory
  2477.  
  2478.         Synopsis:   erase file(s)
  2479.         Prototype:  (erasefile filename)
  2480.         Arguments:  filename <string> - file to erase
  2481.         Returns:    1 if successful, nil otherwise
  2482.         Notes:
  2483.         Example:    (erasefile "thisfile.dat")
  2484.  
  2485.                      ----------------------------------------
  2486.  
  2487.         Function:     file_exists                               Directory
  2488.  
  2489.         Synopsis:   determines if a file exists
  2490.         Prototype:  (file_exists path)
  2491.         Arguments:  <string> path
  2492.         Returns:    1 if true, nil otherwise
  2493.         Notes:
  2494.         Example:    (file_exists "C:\ACAD\FOO.DAT")
  2495.  
  2496.                      ----------------------------------------
  2497.  
  2498.         Function:     findfirst                                 Directory
  2499.  
  2500.         Synopsis:   finds the first instance of a file who's name and
  2501.                     directory attributes match the arguments.
  2502.         Prototype:  (findfirst filespec attribute)
  2503.         Arguments:  filespec <string>             optional - a filespec
  2504.                                                   which can include
  2505.                                                   wildcard characters in
  2506.                                                   the file specification
  2507.                                                   (default *.*)
  2508.                     attribute <integer>           optional - a value
  2509.                                                   between 0 and 255.
  2510.                                                   (default 33) The
  2511.                                                   following values can be
  2512.                                                   ORed or added to
  2513.                                                   produce the needed
  2514.                                                   attribute.
  2515.  
  2516.                     Value     Attribute           
  2517.                     1         Archive file
  2518.                     4         Hidden file
  2519.                     8         Normal file
  2520.                     16        Read only file
  2521.                     32        System file
  2522.                     64        Subdirectory
  2523.                     128       Volume ID
  2524.  
  2525.  
  2526.         ELF Functions                                             page 34
  2527.  
  2528.  
  2529.         Returns:    an AutoLISP list if successful or nil otherwise.
  2530.                     filename  <string> includes file extension
  2531.                     filesize  <string> size of the file in bytes.
  2532.                     date      <string> the file date
  2533.                     time      <string> the file time
  2534.                     attribute <int> the files' attribute
  2535.  
  2536.                     Example: ("FILENAME.EXT" "134562" "3/31/92" "11:21a"
  2537.                     9)
  2538.         Notes:      Findfirst allows you to use the * and ? wildcard
  2539.                     characters to search the file system directory
  2540.                     structure. If the file is found then the function
  2541.                     returns information about the file in an AutoLISP
  2542.                     list. If the attribute parameter is 255 then all
  2543.                     files and directories will match the attribute. The
  2544.                     combination of attribute = 255 and wildcard = "*.*"
  2545.                     will match all files, all directories, and the volume
  2546.                     id if it exists from the current subdirectory.
  2547.  
  2548.                     Files with no attributes will always be returned.
  2549.                     Therefore in order to retrieve only directories then
  2550.                     files with an attribute value of 0 must be filtered
  2551.                     out.
  2552.         Example:    (findfirst "*.DWG" 1+8+16)
  2553.  
  2554.                      ----------------------------------------
  2555.  
  2556.         Function:     findnext                                  Directory
  2557.  
  2558.         Synopsis:   finds the next occurrence of the file specification
  2559.                     and attribute after a findfirst call
  2560.         Prototype:  (findnext)
  2561.         Arguments:  none
  2562.         Returns:    AutoLISP list for the file. (see findfirst)
  2563.         Notes:
  2564.         Example:    (setq fn (findfirst 33 "*.DAT"))
  2565.                     (while (boundp 'fn))
  2566.                       (printf "\n%s" (car fn)))
  2567.                       (setq fn (findnext)
  2568.                     )
  2569.  
  2570.                      ----------------------------------------
  2571.  
  2572.         Function:     fullpath                                  Directory
  2573.  
  2574.         Synopsis:   expands a partial path into a full DOS path string
  2575.         Prototype:  (fullpath path)
  2576.         Arguments:  path <string> a relative or partial path string (eg
  2577.                     "c:filename.ext"
  2578.         Returns:    <string> the full path string (eg
  2579.                     "C:\ACAD\FILENAME.EXT")
  2580.  
  2581.  
  2582.         ELF Functions                                             page 35
  2583.  
  2584.  
  2585.         Notes:      the file does not have to exist
  2586.         Example:    (fullpath "D:FILE.DAT") ;;; might return
  2587.                     "D:\DIR1\FILE.DAT
  2588.  
  2589.                      ----------------------------------------
  2590.  
  2591.         Function:     getdir                                    Directory
  2592.  
  2593.         Synopsis:   returns a string with the current drive:\path
  2594.         Prototype:  (getdir)
  2595.         Arguments:  none
  2596.         Returns:    <string>  current directory path
  2597.         Notes:
  2598.         Example:    (setq curdir (getdir))
  2599.  
  2600.                      ----------------------------------------
  2601.  
  2602.         Function:     getdiskfree                               Directory
  2603.  
  2604.         Synopsis:   returns size statistics in the specified drive number
  2605.                     as a list
  2606.         Prototype:  (getdiskfree 3)
  2607.         Arguments:  <int> drive number (Current=0, A=1, B=2, C=3, etc)
  2608.         Returns:    <list>(<int> total bytes <int> free bytes <int>
  2609.                     sector size <int> sectors per cluster)
  2610.         Notes:
  2611.         Example:    (setq     dstat       (getdiskfree 0)
  2612.                               sector      (cadddr dstat)
  2613.                               cluster     (* sector (caddr dstat))
  2614.                               drive_bytes (* cluster (car dstat))
  2615.                               free_bytes  (* cluster (cadr dstat))
  2616.                     )
  2617.  
  2618.                      ----------------------------------------
  2619.  
  2620.         Function:     getdisk                                   Directory
  2621.  
  2622.         Synopsis:   returns the current drive number (A=1, B=2, C=3, etc)
  2623.         Prototype:  (getdisk)
  2624.         Arguments:  none
  2625.         Returns:    <int> current drive
  2626.         Notes:
  2627.         Example:    (setq DriveStr (sprintf "%c:" (+(getdisk)(1-(ascii
  2628.                     "A"))))
  2629.  
  2630.                      ----------------------------------------
  2631.  
  2632.         Function:     load_dirs                                 Directory
  2633.  
  2634.         Synopsis:   returns a list of strings containing file directories
  2635.                     from the current directory
  2636.         Prototype:  (load_dirs)
  2637.         Arguments:  none
  2638.  
  2639.  
  2640.         ELF Functions                                             page 36
  2641.  
  2642.  
  2643.         Returns:    <list> A list of directories if successful or nil
  2644.                     otherwise
  2645.         Notes:      uses DOS findfirst and findnext
  2646.         Example:    (setq dirs (load_dirs))
  2647.  
  2648.                      ----------------------------------------
  2649.  
  2650.         Function:     load_drives                               Directory
  2651.  
  2652.         Synopsis:   returns a list of strings containing all valid disk
  2653.                     drives
  2654.         Prototype:  (load_drives)
  2655.         Arguments:  none
  2656.         Returns:    <list> A list of drives if successful or nil
  2657.                     otherwise
  2658.         Notes:
  2659.         Example:    (setq drives (load_drives))
  2660.  
  2661.                      ----------------------------------------
  2662.  
  2663.         Function:     load_files                                Directory
  2664.  
  2665.         Synopsis:   returns a list of strings containing files matching a
  2666.                     filespec and directory attribute
  2667.         Prototype:  (load_files filespec attribute)
  2668.         Arguments:  <string>  filespec            optional path and file
  2669.                                                   specification, default:
  2670.                                                   "*.*"
  2671.         Returns:    <int>     attribute           optional bit coded file
  2672.                                                   attributes (see
  2673.                                                   findfirst), default: 33
  2674.                     <list> A list of files if successful or nil otherwise
  2675.         Notes:
  2676.         Example:    (setq files (qsort(load_files "D:\DWGS\*.DWG")))
  2677.  
  2678.                      ----------------------------------------
  2679.  
  2680.         Function:     makepath                                  Directory
  2681.  
  2682.         Synopsis:   Combines the four components into a full DOS path
  2683.                     string
  2684.         Prototype:  (makepath drive dir name ext)
  2685.         Arguments:  see (splitpath)
  2686.         Returns:    <string> full path string
  2687.         Notes:
  2688.         Example:    (makepath "D:" "\ACAD\SUPPORT\" "ACAD" ".LSP")
  2689.  
  2690.                      ----------------------------------------
  2691.  
  2692.         Function:     mkdir                                     Directory
  2693.  
  2694.         Synopsis:   creates a new directory
  2695.  
  2696.  
  2697.         ELF Functions                                             page 37
  2698.  
  2699.  
  2700.         Prototype:  (mkdir dirname)
  2701.                     directory <string> directory to create
  2702.         Arguments:  <string>  directory name if successful or nil
  2703.                               otherwise
  2704.         Returns:
  2705.         Notes:      (mkdir "\newdir")
  2706.         Example:
  2707.  
  2708.                      ----------------------------------------
  2709.  
  2710.         Function:     rmdir                                     Directory
  2711.  
  2712.         Synopsis:   removes (deletes) a directory
  2713.         Prototype:  (rmdir dirname)
  2714.         Arguments:  directory      <string> directory to remove
  2715.         Returns:    <string> current directory if successful or nil
  2716.                     otherwise
  2717.         Notes:
  2718.         Example:    (rmdir "\olddir")
  2719.  
  2720.                      ----------------------------------------
  2721.  
  2722.         Function:     setdisk                                   Directory
  2723.  
  2724.         Synopsis:   logs to the specified disk drive
  2725.         Prototype:  (setdisk drive)
  2726.         Arguments:  drive     <int>               drive number (A=1, B=2,
  2727.                                                   C=3, etc)
  2728.         Returns:    <int>     current drive if successful or nil
  2729.         Notes:
  2730.         Example:    (setdisk 3) ;;; make drive C: current
  2731.  
  2732.                      ----------------------------------------
  2733.  
  2734.         Function:     splitpath                                 Directory
  2735.  
  2736.         Synopsis:   splits a DOS path string into its four components
  2737.         Prototype:  (splitpath path)
  2738.         Arguments:  path      <string> full DOS path to a file
  2739.         Returns:    a <list> containing four strings:
  2740.                     drive     the drive character followed by a ':' (eg
  2741.                               "C:")
  2742.                     dir       the directory (eg "\ACAD\SUPPORT"
  2743.                     name      the name of the file (eg "ACAD")
  2744.                     ext       a period followed by the file extension
  2745.                               (eg ".LSP")
  2746.  
  2747.  
  2748.         ELF Functions                                             page 38
  2749.  
  2750.  
  2751.         Notes:
  2752.         Example:    (setq
  2753.                       plist (splitpath "D:\ACAD\SUPPORT\ACAD.LSP")
  2754.                       drive (car plist)           ;;; "D:"
  2755.   dir (cadr plist)            ;;; "\ACAD\SUPPORT\"
  2756.                       name (caddr plist)          ;;; "ACAD"
  2757.                       ext (cadddr plist)          ;;; ".LSP"
  2758.                     )
  2759.  
  2760.                      ----------------------------------------
  2761.  
  2762.         Function:     unlink                                    Directory
  2763.  
  2764.         Synopsis:   erase file(s)
  2765.         Prototype:  (unlink filename)
  2766.         Arguments:  filename <string> - file to erase
  2767.         Returns:    1 if successful, nil otherwise
  2768.         Notes:      unlink and erasefile are identical
  2769.         Example:    (unlink "thisfile.dat")
  2770.  
  2771.                      ----------------------------------------
  2772.  
  2773.         File Functions
  2774.  
  2775.         ELF  contains  file handling  functions  to speed  file handling.
  2776.         AutoLISP provides  functions to read  and write  to text files  a
  2777.         character and a  line at a time.  ELF adds functions to  read and
  2778.         write the entire file in one step. 
  2779.  
  2780.         The function  (read_file) will return  the contents of  an entire
  2781.         file  and can be  used to quickly  load the contents  of the file
  2782.         into an AutoLISP  symbol. (write_file)  inverses the process  and
  2783.         will write the  entire contents of  an AutoLISP string list  to a
  2784.         file. These functions are much faster than looping through a list
  2785.         and reading/writing a line at a time with AutoLISP.
  2786.  
  2787.                      ----------------------------------------
  2788.  
  2789.         Function:     copyfile                                       File
  2790.  
  2791.         Synopsis:   copies file(s)
  2792.         Prototype:  (copyfile source destination)
  2793.         Arguments:  <string>  source path
  2794.                     <string>  destination path
  2795.         Returns:    number of files copied if successful, nil otherwise
  2796.         Notes:      The destination can be a either a file or directory.
  2797.                     Both input and output streams are buffered to improve
  2798.                     copy speed.
  2799.         Example:    (copyfile "C:\ACAD\*.DAT" "D:")
  2800.  
  2801.                      ----------------------------------------
  2802.  
  2803.  
  2804.         ELF Functions                                             page 39
  2805.  
  2806.  
  2807.         Function:     look                                           File
  2808.  
  2809.         Synopsis:   displays an ASCII file to screen using the ELF file
  2810.                     viewer
  2811.         Prototype:  (look filespec)
  2812.         Arguments:  <filespec>     filename or wildcard filespec to view
  2813.         Returns:    1 if successful, nil otherwise
  2814.         Notes:
  2815.         Example:    (look "C:\ACAD\*.DOC"
  2816.  
  2817.                      ----------------------------------------
  2818.  
  2819.         Function:     movefile                                       File
  2820.  
  2821.         Synopsis:   moves / renames file(s)
  2822.         Prototype:  (movefile source destination)
  2823.         Arguments:  <string>  source path
  2824.                     <string>  destination path
  2825.         Returns:    number of files moved if successful, nil otherwise
  2826.         Notes:      destination must be on the same drive
  2827.         Example:    (movefile "C:\ACAD\*.DAT" "C:\DATDIR")
  2828.  
  2829.                      ----------------------------------------
  2830.  
  2831.         Function:     read_file                                      File
  2832.  
  2833.         Synopsis:   reads an ASCII file and returns a string list from
  2834.                     file records. Each line in the text file is parsed
  2835.                     into a string and appended to the returned list.
  2836.         Prototype:  (read_file filespec mode)
  2837.         Arguments:  <string>  filespec            file specification of
  2838.                                                   the file to read
  2839.                     <int>     mode                type of list to create
  2840.                                                   (see return value)
  2841.         Returns:    <list>    A list whose contents are dependant on
  2842.                               mode
  2843.                     Value     Meaning             
  2844.                     0 or nil  A list of strings
  2845.                     1         A list of dotted pairs containing a 0
  2846.                               based sequential value and a string
  2847.         Notes:      The dotted pair list can be accessed randomly using
  2848.                     the (assoc) function.
  2849.         Example:    (read_file "FOO.BAR" 1)
  2850.  
  2851.                      ----------------------------------------
  2852.  
  2853.         Function:     write_file                                     File
  2854.  
  2855.         Synopsis:   opens an ASCII file and writes a string list to the
  2856.                     file and then closes the file. Each string is placed
  2857.                     in the text file as a line of text.
  2858.         Prototype:  (write_file filespec type)
  2859.  
  2860.  
  2861.         ELF Functions                                             page 40
  2862.  
  2863.  
  2864.         Arguments:  <string>  filespec            file specification of
  2865.                                                   the file to write
  2866.                     <string>  type                how the file will be
  2867.                                                   opened, "a" appends to
  2868.                                                   the end of the file,
  2869.                                                   otherwise a new file
  2870.                                                   will be created and any
  2871.                                                   other character is
  2872.                                                   ignored.
  2873.                     <list>    A list of strings
  2874.         Returns:    <int>     the number of lines written
  2875.         Notes:
  2876.         Example:    (write_file "FOO.BAR" "a" "This is data") ;;; appends
  2877.                     a line to file FOO.BAR
  2878.  
  2879.                      ----------------------------------------
  2880.  
  2881.         Binary File
  2882.  
  2883.         The  binary file  functions  provide a  means to  read  and write
  2884.         binary  files.  These  functions  are  used seperate  from  other
  2885.         "standard"  AutoLISP file  I/O functions.  A file  opened by  the
  2886.         AutoLISP function "open" can not be read or written by the binary
  2887.         functions and vice-versa.
  2888.  
  2889.         Byte(char), short int, long int (passed and returned  as a real),
  2890.         real  (double precision float) and string  data types can be read
  2891.         and  written. In addition  frewind and fseek  allow random access
  2892.         reads and writes within the file.
  2893.  
  2894.                      ----------------------------------------
  2895.  
  2896.         Function:     fclose                                  Binary File
  2897.  
  2898.         Synopsis:   closes a binary file
  2899.         Prototype:  (fclose <handle>)
  2900.         Arguments:  handle    <int>               ELF file handle of an
  2901.                     open binary file
  2902.         Returns:    The file handle if successful or nil otherwise
  2903.         Notes:      fclose can not close files opened with the AutoLISP
  2904.                     function "open"
  2905.         Example:    (if(not(fclose file_handle))(princ "\nERROR closing
  2906.                     file"))
  2907.  
  2908.                      ----------------------------------------
  2909.  
  2910.         Function:     feof                                    Binary File
  2911.  
  2912.         Synopsis:   returns nonnil if the end of file has been reached
  2913.         Prototype:  (feof <handle>
  2914.         Arguments:  handle    <int>               ELF file handle of an
  2915.                     open binary file
  2916.         Returns:    <int>     nonil value if true, nil otherwise
  2917.  
  2918.  
  2919.         ELF Functions                                             page 41
  2920.  
  2921.  
  2922.         Notes:
  2923.         Example:    (if(feof file_handle) (princ "\nend of file
  2924.                     encountered"))
  2925.  
  2926.                      ----------------------------------------
  2927.  
  2928.         Function:     ferror                                  Binary File
  2929.  
  2930.         Synopsis:   returns nonnil if OS file error indicator has been
  2931.                     set
  2932.         Prototype:  (ferror <handle>)
  2933.         Arguments:  handle    <int>               ELF file handle of an
  2934.                     open binary file
  2935.         Returns:    <int>     nonil value if true, nil otherwise
  2936.         Notes:
  2937.         Example:    (if(ferror file_handle) (princ "\nfile error"))
  2938.  
  2939.                      ----------------------------------------
  2940.  
  2941.         Function:     fgetc                                   Binary File
  2942.  
  2943.         Synopsis:   reads a character (byte) value from a binary file
  2944.         Prototype:  (fgetc <handle>)
  2945.         Arguments:  handle    <int>               ELF file handle of an
  2946.                     open binary file
  2947.         Returns:    <int>     character integer value read or nil on
  2948.                     error
  2949.         Notes:
  2950.         Example:    (setq s (chr(fgetc file_handle)))
  2951.  
  2952.                      ----------------------------------------
  2953.  
  2954.         Function:     fgets                                   Binary File
  2955.  
  2956.         Synopsis:   reads a string of up to len characters from a binary
  2957.                     file
  2958.         Prototype:  (fgets <handle> <len>)
  2959.         Arguments:  handle    <int>               ELF file handle of an
  2960.                     open binary file
  2961.                     len       <int>               maximum number of
  2962.                     characters to read
  2963.         Returns:    <string>  string read or nil on error
  2964.         Notes:      fgets reads characters until it encounters a newline
  2965.                     or <len> characters are read
  2966.         Example:    (setq name (fgets file_handle))
  2967.  
  2968.                      ----------------------------------------
  2969.  
  2970.         Function:     fgetsc                                  Binary File
  2971.  
  2972.         Synopsis:   reads a signed character value from a binary file
  2973.         Prototype:  (fgetsc <handle>)
  2974.  
  2975.  
  2976.         ELF Functions                                             page 42
  2977.  
  2978.  
  2979.         Arguments:  handle    <int>               ELF file handle of an
  2980.                     open binary file
  2981.         Returns:    <int>     signed char (as an integer) value read or
  2982.                     nil on error
  2983.         Notes:
  2984.         Example:    (setq sc (fgetsc file_handle))
  2985.  
  2986.                      ----------------------------------------
  2987.  
  2988.         Function:     fgetint                                 Binary File
  2989.  
  2990.         Synopsis:   reads a short integer (2 byte word) value from a
  2991.                     binary file
  2992.         Prototype:  (fgetint <handle>)
  2993.         Arguments:  handle    <int>               ELF file handle of an
  2994.                     open binary file
  2995.         Returns:    <int>     integer value read or nil on error
  2996.         Notes:
  2997.         Example:    (setq x (fgetint file_handle))
  2998.  
  2999.                      ----------------------------------------
  3000.  
  3001.         Function:     fgetlong                                Binary File
  3002.  
  3003.         Synopsis:   reads a long integer (4 byte double word) value from
  3004.                     a binary file
  3005.         Prototype:  (fgetlong <handle>)
  3006.         Arguments:  handle    <int>               ELF file handle of an
  3007.                     open binary file
  3008.         Returns:    <real>    long integer value read (converted to a
  3009.                     real) or nil on error
  3010.         Notes:      AutoLISP does not support a long integer datatype so
  3011.                     long values must be returned to AutoLISP as a real.
  3012.         Example:    (setq x (fgetlong file_handle))
  3013.  
  3014.                      ----------------------------------------
  3015.  
  3016.         Function:     fgetreal                                Binary File
  3017.  
  3018.         Synopsis:   reads a real (8 byte double precision floating point)
  3019.                     value from a binary file
  3020.         Prototype:  (fgetreal <handle>)
  3021.         Arguments:  handle    <int>               ELF file handle of an
  3022.                     open binary file
  3023.         Returns:    <real>    real value read or nil on error
  3024.         Notes:
  3025.         Example:    (setq x (fgetreal file_handle))
  3026.  
  3027.                      ----------------------------------------
  3028.  
  3029.  
  3030.         ELF Functions                                             page 43
  3031.  
  3032.  
  3033.         Function:     fopen                                   Binary File
  3034.  
  3035.         Synopsis:   opens a binary file
  3036.         Prototype:  (fopen <fname><mode>)
  3037.         Arguments:  handle    <int>               ELF file handle
  3038.         Returns:    The file handle if successful or nil otherwise
  3039.         Notes:      The ELF file handle is an integer value that is an
  3040.                     index to an array of OS file handles maintained
  3041.                     internally by ELF. AutoLISP and ELF file handles can
  3042.                     not be interchanged, if a file is opened by ELF it
  3043.                     can be accessed using ELF binary file functions only.
  3044.                     The file must be closed (using fclose) and reopened
  3045.                     using the AutoLISP function "open" to use the
  3046.                     AutoLISP library functions to access the file.
  3047.         Example:    (if(not(fclose file_handle))(princ "\nERROR closing
  3048.                     file"))
  3049.  
  3050.                      ----------------------------------------
  3051.  
  3052.         Function:     fputc                                   Binary File
  3053.  
  3054.         Synopsis:   writes a character (byte) value to a binary file
  3055.         Prototype:  (fputc <handle> <char>)
  3056.         Arguments:  handle    <int>               ELF file handle of an
  3057.                     open binary file
  3058.                     char      <int>               character (as an
  3059.                     integer value) to write
  3060.         Returns:    <int>     character integer value written or nil on
  3061.                     error
  3062.         Notes:      writes the least significat byte of the integer value
  3063.         Example:    (if(not(fputc file_handle (ascii "A"))) (princ
  3064.                     "\nError writing character"))
  3065.  
  3066.                      ----------------------------------------
  3067.  
  3068.         Function:     fputs                                   Binary File
  3069.  
  3070.         Synopsis:   writes a string to a binary file
  3071.         Prototype:  (fputs <handle> <string>)
  3072.         Arguments:  handle    <int>               ELF file handle of an
  3073.                     open binary file
  3074.                     char      <int>               string to write
  3075.         Returns:    <string>  string written or nil on error
  3076.         Notes:      only the string is written, a terminating NUL is not
  3077.                     written.
  3078.         Example:    (if(not(fputs file_handle "Hello")) (princ "\nError
  3079.                     writing string"))
  3080.  
  3081.                      ----------------------------------------
  3082.  
  3083.  
  3084.         ELF Functions                                             page 44
  3085.  
  3086.  
  3087.         Function:     fputint                                 Binary File
  3088.  
  3089.         Synopsis:   writes an integer (2 byte word) value to a binary
  3090.                     file
  3091.         Prototype:  (fputint <handle> <int>)
  3092.         Arguments:  handle    <int>               ELF file handle of an
  3093.                     open binary file
  3094.                     int       <int>               an integer value to
  3095.                     write
  3096.         Returns:    <int>     integer value written or nil on error
  3097.         Notes:
  3098.         Example:    (if(not(fputint file_handle 123)) (princ "\nError
  3099.                     writing integer"))
  3100.  
  3101.                      ----------------------------------------
  3102.  
  3103.         Function:     fputlong                                Binary File
  3104.  
  3105.         Synopsis:   writes a long integer (4 byte double word) value to a
  3106.                     binary file
  3107.         Prototype:  (fputlong <handle> <long>)
  3108.         Arguments:  handle    <int>               ELF file handle of an
  3109.                     open binary file
  3110.                     long      <real>              a long integer value as
  3111.                     a real to write
  3112.         Returns:    <real>    long integer value written or nil on error
  3113.         Notes:      long values (greater than 32767 or less than -32768)
  3114.                     must be passed as a real
  3115.         Example:    (if(not(fputlong file_handle (float 123456789)))
  3116.                     (princ "\nError writing long"))
  3117.  
  3118.                      ----------------------------------------
  3119.  
  3120.         Function:     fputreal                                Binary File
  3121.  
  3122.         Synopsis:   writes a real (8 byte double precision floating
  3123.                     point) value to a binary file
  3124.         Prototype:  (fputreal <handle> <real>)
  3125.         Arguments:  handle    <int>               ELF file handle of an
  3126.                     open binary file
  3127.                     real      <real>              value to write
  3128.         Returns:    <real>    real value written or nil on error
  3129.         Notes:
  3130.         Example:    (if(not(fputreal file_handle 1.2345)) (princ "\nError
  3131.                     writing real"))
  3132.  
  3133.                      ----------------------------------------
  3134.  
  3135.         Function:     frewind                                 Binary File
  3136.  
  3137.         Synopsis:   moves the file pointer to the beginning of the file
  3138.         Prototype:  (frewind <handle>)
  3139.  
  3140.  
  3141.         ELF Functions                                             page 45
  3142.  
  3143.  
  3144.         Arguments:  handle    <int>               ELF file handle of an
  3145.                     open binary file
  3146.         Returns:    The file handle if successful or nil otherwise
  3147.         Notes:
  3148.         Example:    (frewind file_handle))
  3149.  
  3150.                      ----------------------------------------
  3151.  
  3152.         Function:     fseek                                   Binary File
  3153.  
  3154.         Synopsis:   moves the file pointer
  3155.         Prototype:  (fseek <handle><origin><offset>)
  3156.         Arguments:  handle    <int>               ELF file handle of an
  3157.                     open binary file
  3158.                     origin    <int>               from whence file
  3159.                     pointer is moved:
  3160.                                    0 - beginning of file
  3161.                                    1 - current position
  3162.                                    2 - end of file
  3163.                     offset    <real>              number of bytes to move
  3164.         Returns:    <int>     An nonnil value if successful or nil
  3165.                     otherwise
  3166.         Notes:
  3167.         Example:    (foffset file_handle 0 0.0) ; same as frewind
  3168.                     (foffset file_handle 1 10.0) ; advance pointer 10
  3169.                     bytes
  3170.                     (foffset file_handle 2 -10.0) ; 10 bytes before wnd
  3171.                     of file
  3172.  
  3173.                      ----------------------------------------
  3174.  
  3175.         Function:     ftell                                   Binary File
  3176.  
  3177.         Synopsis:   returns the current position of a binary file pointer
  3178.         Prototype:  (ftell <handle>)
  3179.         Arguments:  handle    <int>               ELF file handle of an
  3180.                     open binary file
  3181.         Returns:    <real>    The position of the file pointer from the
  3182.                     beginning of the file if successful or nil otherwise
  3183.         Notes:
  3184.         Example:    (setq fpos (ftell file_handle)) ; get file pointer
  3185.                     position
  3186.  
  3187.                      ----------------------------------------
  3188.         Math Functions
  3189.  
  3190.         ELF expands the AutoLISP math library with additional math, trig,
  3191.         and logical functions.
  3192.  
  3193.                      ----------------------------------------
  3194.  
  3195.  
  3196.         ELF Functions                                             page 46
  3197.  
  3198.  
  3199.         Function:     |                                              Math
  3200.  
  3201.         Synopsis:   returns the result of a bitwise OR of the arguments
  3202.         Prototype:  (| ...)
  3203.         Arguments:  ...       <int>               any number of integer
  3204.                                                   values
  3205.         Returns:    <int>     the result of the bitwise OR
  3206.         Notes:
  3207.         Example:    (setq color (| lgrey blue_bg))
  3208.  
  3209.                      ----------------------------------------
  3210.  
  3211.         Function:     ||                                             Math
  3212.  
  3213.         Synopsis:   returns the result of a logical OR of the arguments
  3214.         Prototype:  (|| ...)
  3215.         Arguments:  ...       <int>               any number of integer
  3216.                                                   values
  3217.         Returns:    <int>     the result of the logical OR
  3218.         Notes:
  3219.         Example:
  3220.  
  3221.                      ----------------------------------------
  3222.  
  3223.         Function:     &                                              Math
  3224.  
  3225.         Synopsis:   returns the result of a bitwise AND of the arguments
  3226.         Prototype:  (& ...)
  3227.         Arguments:  ...       <int>               any number of integer
  3228.                                                   values
  3229.         Returns:    <int>     the result of the bitwise AND
  3230.         Notes:
  3231.         Example:
  3232.  
  3233.                      ----------------------------------------
  3234.  
  3235.         Function:     &&                                             Math
  3236.  
  3237.         Synopsis:   returns the result of a logical AND of the arguments
  3238.         Prototype:  (&& ...)
  3239.         Arguments:  ...       <int>               any number of integer
  3240.                                                   values
  3241.         Returns:    <int>     the result of the logical AND
  3242.         Notes:
  3243.         Example:
  3244.  
  3245.                      ----------------------------------------
  3246.  
  3247.         Function:     acos                                           Math
  3248.  
  3249.         Synopsis:   returns the inverse cosine of the argument
  3250.         Prototype:  (acos rad)
  3251.         Arguments:  rad       <real>              angle in radians
  3252.  
  3253.  
  3254.         ELF Functions                                             page 47
  3255.  
  3256.  
  3257.         Returns:    <real>
  3258.         Notes:
  3259.         Example:
  3260.  
  3261.                      ----------------------------------------
  3262.  
  3263.         Function:     asin                                           Math
  3264.  
  3265.         Synopsis:   returns the inverse sine of the argument
  3266.         Prototype:  (asin rad)
  3267.         Arguments:  rad       <real>              angle in radians
  3268.         Returns:    <real>
  3269.         Notes:
  3270.         Example:
  3271.  
  3272.                      ----------------------------------------
  3273.  
  3274.         Function:     ceil                                           Math
  3275.  
  3276.         Synopsis:   returns the smallest integer greater or equal to the
  3277.                     argument
  3278.         Prototype:  (ceil rval)
  3279.         Arguments:  rval      <real>
  3280.         Returns:    <real>
  3281.         Notes:
  3282.         Example:    (ceil 7.5)     ;;; returns 8.0
  3283.                     (ceil -7.5)    ;;; returns -7.0
  3284.  
  3285.                      ----------------------------------------
  3286.  
  3287.         Function:     cosh                                           Math
  3288.  
  3289.         Synopsis:   returns the hyperbolic cosine of the argument
  3290.         Prototype:  (cosh rad)
  3291.         Arguments:  rad       <real>              angle in radians
  3292.         Returns:    <real>
  3293.         Notes:
  3294.         Example:
  3295.  
  3296.                      ----------------------------------------
  3297.  
  3298.         Function:     dtr                                            Math
  3299.  
  3300.         Synopsis:   converts an angle in degrees to radians
  3301.         Prototype:  (dtr ang)
  3302.         Arguments:  ang       <real>              angle in degrees
  3303.         Returns:    <real>    the angle in radians
  3304.         Notes:
  3305.         Example:    (setq rad (dtr deg))
  3306.  
  3307.                      ----------------------------------------
  3308.  
  3309.  
  3310.         ELF Functions                                             page 48
  3311.  
  3312.  
  3313.         Function:     floor                                          Math
  3314.  
  3315.         Synopsis:   returns the largest integer not greater than the
  3316.                     argument
  3317.         Prototype:  (floor rval)
  3318.         Arguments:  rval      <real>
  3319.         Returns:    <real>
  3320.         Notes:
  3321.         Example:    (floor 7.5)  ;;; returns 7.0
  3322.                     (floor -7.5) ;;; returns -8.0
  3323.  
  3324.                      ----------------------------------------
  3325.  
  3326.         Function:     hibyte                                         Math
  3327.  
  3328.         Synopsis:   returns the upper (most significant) byte of an
  3329.                     integer
  3330.         Prototype:  (hibyte val)
  3331.         Arguments:  val       <int>               an integer value
  3332.         Returns:    <int>     an integer value containing the MSB
  3333.         Notes:
  3334.         Example:    (setq keycode (getkey) ;;; get a keypress
  3335.                       char (lobyte keycode) ;;;the character value
  3336.                       scancode (hibyte keycode) ;;; the keyboard scancode
  3337.                     )
  3338.  
  3339.                      ----------------------------------------
  3340.  
  3341.         Function:     int2sc                                         Math
  3342.  
  3343.         Synopsis:   converts a signed integer into a signed char
  3344.         Prototype:  (int2sc val)
  3345.         Arguments:  val       <int>               an integer value
  3346.         Returns:    <int>     an integer value
  3347.         Notes:
  3348.         Example:
  3349.  
  3350.                      ----------------------------------------
  3351.  
  3352.         Function:     lobyte                                         Math
  3353.  
  3354.         Synopsis:   returns the lower (least significant) byte of an
  3355.                     integer
  3356.         Prototype:  (lobyte val)
  3357.         Arguments:  val       <int>               an integer value
  3358.         Returns:    <int>     an integer value containing the LSB
  3359.         Notes:
  3360.         Example:    see hibyte
  3361.  
  3362.                      ----------------------------------------
  3363.  
  3364.  
  3365.         ELF Functions                                             page 49
  3366.  
  3367.  
  3368.         Function:     log10                                          Math
  3369.  
  3370.         Synopsis:   returns the logarithm to the base 10 of the argument
  3371.         Prototype:  (log10 x)
  3372.         Arguments:  x         <real>
  3373.         Returns:    <real>    or nil of x <= 0.0
  3374.         Notes:
  3375.         Example:
  3376.  
  3377.                      ----------------------------------------
  3378.  
  3379.         Function:     rand                                           Math
  3380.  
  3381.         Synopsis:   generates a pseudo random number
  3382.         Prototype:  (rand)
  3383.         Arguments:
  3384.         Returns:    <real>    a random value (actually a long integer)
  3385.         Notes:      the sequence has a period of 2^32
  3386.         Example:    (setq x (fix(rem(rand 10))))
  3387.  
  3388.                      ----------------------------------------
  3389.  
  3390.         Function:     round                                          Math
  3391.  
  3392.         Synopsis:   rounds a real value
  3393.         Prototype:  (round val places)
  3394.         Arguments:  val       <real>              the value to round
  3395.                     places    <int>               the number of places to
  3396.                                                   the right of the
  3397.                                                   decimal
  3398.         Returns:    <real>    the rounded value
  3399.         Notes:
  3400.         Example:    (setq pct (round val 2))
  3401.  
  3402.                      ----------------------------------------
  3403.  
  3404.         Function:     rtd                                            Math
  3405.  
  3406.         Synopsis:   converts an angle in radians to degrees
  3407.         Prototype:  (rtd ang)
  3408.         Arguments:  ang       <real>              angle in radians
  3409.         Returns:    <real>    the angle in degrees
  3410.         Notes:
  3411.         Example:    (setq deg (rtd rad))
  3412.  
  3413.                      ----------------------------------------
  3414.  
  3415.         Function:     sinh                                           Math
  3416.  
  3417.         Synopsis:   returns the hyperbolic sine of the argument
  3418.         Prototype:  (sinh rad)
  3419.         Arguments:  rad       <real>              angle in radians
  3420.         Returns:    <real>
  3421.  
  3422.  
  3423.         ELF Functions                                             page 50
  3424.  
  3425.  
  3426.         Notes:
  3427.         Example:
  3428.  
  3429.                      ----------------------------------------
  3430.  
  3431.         Function:     srand                                          Math
  3432.  
  3433.         Synopsis:   seeds the random number generator
  3434.         Prototype:  (srand i)
  3435.         Arguments:  i         <int>               optional seed value
  3436.                                                   (default = 1)
  3437.         Returns:
  3438.         Notes:
  3439.         Example:    (srand pi)
  3440.  
  3441.                      ----------------------------------------
  3442.  
  3443.         Function:     swapb                                          Math
  3444.  
  3445.         Synopsis:   reverses bytes in a (short) integer
  3446.         Prototype:  (swapb i)
  3447.         Arguments:  i         <int>               integer value
  3448.         Returns:    <int>     integer
  3449.         Notes:
  3450.         Example:
  3451.  
  3452.                      ----------------------------------------
  3453.  
  3454.         Function:     tan                                            Math
  3455.  
  3456.         Synopsis:   returns the trigonometric tangent of the argument
  3457.         Prototype:  (tan rad)
  3458.         Arguments:  rad       <real>              angle in radians
  3459.         Returns:    <real>
  3460.         Notes:
  3461.         Example:
  3462.  
  3463.                      ----------------------------------------
  3464.  
  3465.         Function:     tanh                                           Math
  3466.  
  3467.         Synopsis:   returns the hyperbolic tangent of the argument
  3468.         Prototype:  (tanh rad)
  3469.         Arguments:  rad       <real>              angle in radians
  3470.         Returns:    <real>
  3471.         Notes:
  3472.         Example:
  3473.  
  3474.                      ----------------------------------------
  3475.  
  3476.  
  3477.         ELF Functions                                             page 51
  3478.  
  3479.  
  3480.         Function:     xtoi                                           Math
  3481.  
  3482.         Synopsis:   converts a hex string to an integer
  3483.         Prototype:  (xtoi s)
  3484.         Arguments:  s         <string>            a hex string (eg
  3485.                                                   "0x1CFF")
  3486.         Returns:    <int>     integer value of hex string
  3487.         Notes:
  3488.         Example:
  3489.  
  3490.                      ----------------------------------------
  3491.  
  3492.         List Handling Functions
  3493.  
  3494.         The  list  data structure  is a  central part  of LISP.  ELF adds
  3495.         functions to manipulate single dimension AutoLISP arrays. You can
  3496.         sort, insert, delete, replace, and find elements in a list.
  3497.  
  3498.                      ----------------------------------------
  3499.  
  3500.         Function:     bsearch                                        List
  3501.  
  3502.         Synopsis:   located a value in a sorted string, integer or real
  3503.                     value list
  3504.         Prototype:  (bsearch vlist key)
  3505.         Arguments:  vlist     <list>              list of string,
  3506.                                                   integer, or real values
  3507.                     key       <atom>              string, integer, or
  3508.                                                   real value to locate
  3509.         Returns:    <int>     0 based index if found or nil if not found
  3510.         Notes:      the list must be sorted and of type string, integer,
  3511.                     or real
  3512.         Example:    (setq sl (qsort '("CC" "BB" "AA")) ;;; returns ("AA"
  3513.                     "BB" "CC")
  3514.                     (bsearch sl "AA") ;;; returns 0
  3515.  
  3516.                      ----------------------------------------
  3517.  
  3518.         Function:     delete                                         List
  3519.  
  3520.         Synopsis:   deletes a list or atom from another list
  3521.         Prototype:  (delete list pos)
  3522.         Arguments:  list      <list>              list
  3523.                                                   a list
  3524.                     pso       <int>               0 based position to
  3525.                                                   insert
  3526.         Returns:    new list
  3527.         Notes:
  3528.         Example:    (setq new_list(delete old_list 3)) ;;; deletes 4th
  3529.                     element
  3530.  
  3531.                      ----------------------------------------
  3532.  
  3533.  
  3534.         ELF Functions                                             page 52
  3535.  
  3536.  
  3537.         Function:     insert                                         List
  3538.  
  3539.         Synopsis:   inserts a list or atom into another list
  3540.         Prototype:  (insert list pos item)
  3541.         Arguments:  list      <list>              a list
  3542.                     pos       <int>               0 based position to
  3543.                                                   insert
  3544.                     <list> or <atom>              val
  3545.                                                   the list or value to
  3546.                                                   insert
  3547.         Returns:    new list
  3548.         Notes:
  3549.         Example:    (setq new_list (insert old_list 3 '("XX" "YY" 123)))
  3550.  
  3551.                      ----------------------------------------
  3552.  
  3553.         Function:     lfind                                          List
  3554.  
  3555.         Synopsis:   located a value in an unsorted string, integer or
  3556.                     real value list
  3557.         Prototype:  (lfind vlist key)
  3558.         Arguments:  vlist     <list>              list of string,
  3559.                                                   integer, or real values
  3560.                     key       <atom>              string, integer, or
  3561.                                                   real value to find
  3562.         Returns:    <int>     0 based index if found or nil if not found
  3563.         Notes:      the list must be of type string, integer, or real
  3564.         Example:    (setq sl '("CC" "BB" "AA"))
  3565.                     (lfind sl "AA") ;;; returns 2
  3566.  
  3567.                      ----------------------------------------
  3568.  
  3569.         Function:     lsearch                                        List
  3570.  
  3571.         Synopsis:   located a value in a string, integer or real value
  3572.                     list
  3573.         Prototype:  (lsearch vlist key)
  3574.         Arguments:  vlist     <list>              list of string,
  3575.                                                   integer, or real values
  3576.                     key       <atom>              string, integer, or
  3577.                                                   real value to locate
  3578.         Returns:    <int>     vlist if found or vlist with key appended
  3579.                               if not found
  3580.         Notes:      the list must be of type string, integer, or real
  3581.         Example:    (setq sl '("CC" "BB" "AA"))
  3582.                     (lsearch sl "XX") ;;; returns ("CC "BB" "AA" "XX")
  3583.  
  3584.                      ----------------------------------------
  3585.  
  3586.  
  3587.         ELF Functions                                             page 53
  3588.  
  3589.  
  3590.         Function:     qsort                                          List
  3591.  
  3592.         Synopsis:   sorts a string, integer or real value list; or a list
  3593.                     of lists
  3594.         Prototype:  (qsort lst field)
  3595.         Arguments:  lst       <list>              list to sort
  3596.                     fld       <int>               optional sort key field
  3597.                                                   position for sorting
  3598.                                                   lists of lists, 1 =
  3599.                                                   first field, 2 second,
  3600.                                                   etc
  3601.         Returns:    <list>    sorted list
  3602.         Notes:
  3603.         Example:    (qsort '("CC" "BB "AA")) ;;; returns ("AA" "BB" "CC")
  3604.                     (qsort '(3 2 1) ;;; returns (1 2 3)
  3605.                     (qsort (list (1 "XX")(2 "AA")) 2) returns ((2 "AA")(1
  3606.                     "XX"))
  3607.  
  3608.                      ----------------------------------------
  3609.  
  3610.         Function:     replace                                        List
  3611.  
  3612.         Synopsis:   replace a list or atom in a list with another
  3613.         Prototype:  (replace list pos item)
  3614.         Arguments:  list      <list>              a list
  3615.                     pos       <int>               0 based position to
  3616.                                                   insert
  3617.                     <list> or <atom>              val
  3618.                                                   the new list or value
  3619.                                                   to substitute
  3620.         Returns:    new list
  3621.         Notes:
  3622.         Example:    (replace old_list 3 "XX")
  3623.  
  3624.                      ----------------------------------------
  3625.  
  3626.         Function:     symbol                                         List
  3627.  
  3628.         Synopsis:   Displays the contents of a symbol to the screen using
  3629.                     the ELF file/symbol viewer.
  3630.         Prototype:  (symbol sym)
  3631.         Arguments:  sym       an AutoLISP symbol / list / function
  3632.         Returns:
  3633.         Notes:      release 12 only
  3634.         Example:    (symbol (qsort(atoms-family 1))) ;;; displays a list
  3635.                     of all symbols
  3636.  
  3637.                      ----------------------------------------
  3638.  
  3639.         String Handling Functions
  3640.  
  3641.  
  3642.         ELF Functions                                             page 54
  3643.  
  3644.  
  3645.         The ELF string library contains functions to scan and modify text
  3646.         strings. In addition, the function (strget) adds a flexible  line
  3647.         editor with an integrated help system.
  3648.  
  3649.                      ----------------------------------------
  3650.  
  3651.         Function:     field                                        String
  3652.  
  3653.         Synopsis:   returns a substring of str1 from token delimiters in
  3654.                     str2 and position.
  3655.         Prototype:  (field str1 str2 pos)
  3656.         Arguments:  str1      <string>            the string to search
  3657.                     str2      <string>            the string containing
  3658.                                                   delimiters
  3659.         Returns:    pos       <int>               the 1 based position in
  3660.                                                   the string
  3661.                     <string>  the nth pos substring of str1 delimited by
  3662.                               chars in str2 or nil
  3663.         Notes:
  3664.         Example:    (field "AA;BB;CC;DD;EE" ";" 2) ;;; returns "BB"
  3665.  
  3666.                      ----------------------------------------
  3667.  
  3668.         Function:     set_edit_help                                String
  3669.  
  3670.         Synopsis:   sets the user help string list for the function
  3671.                     (strget)
  3672.         Prototype:  (set_edit_help <slist>)
  3673.         Arguments:  <slist>   a string list to be displayed when the F1
  3674.                               key is pressed while in (strget). The
  3675.                               first item in the list will be the help
  3676.                               window title.
  3677.         Returns:
  3678.         Notes:      In release 12 or higher the symbol EDIT_HELP can be
  3679.                     used to set the help string. In release 12
  3680.                     (set_edit_help) will also set this symbol. The symbol
  3681.                     EDIT_HELP can be local to a particular function or
  3682.                     global in scope.
  3683.  
  3684.                     The user can display the default help screen by
  3685.                     pressing F1 the second time.
  3686.         Example:    (set_edit_help '("[ My Help Screen ]" "" "This is my
  3687.                     help message"))
  3688.  
  3689.                      ----------------------------------------
  3690.  
  3691.         Function:     sprintf                                      String
  3692.  
  3693.         Synopsis:   same as printf except that nothing is printed, the
  3694.                     string is returned
  3695.         Prototype:  (sprintf format ...)
  3696.         Arguments:  see printf
  3697.         Returns:    <string>  formatted string
  3698.  
  3699.  
  3700.         ELF Functions                                             page 55
  3701.  
  3702.  
  3703.         Notes:      printf to string
  3704.         Example:    (write-line (sprintf "\n%-10s%10.3g%10d" name salary
  3705.                     age) fp)
  3706.  
  3707.                      ----------------------------------------
  3708.  
  3709.         Function:     strchr                                       String
  3710.  
  3711.         Synopsis:   finds the first occurrence of ch in str and returns a
  3712.                     substring starting at that character
  3713.         Prototype:  (strchr str ch)
  3714.         Arguments:  str       <string>            the string to search
  3715.                     ch        <int>               the character to search
  3716.                                                   for
  3717.         Returns:    <string>  the substring starting in ch
  3718.         Notes:
  3719.         Example:    (strchr "AABBCC" (ascii "B")) ;;; returns "BBCC"
  3720.  
  3721.                      ----------------------------------------
  3722.  
  3723.         Function:     strcmp                                       String
  3724.  
  3725.         Synopsis:   compares two strings for equality (case sensitive)
  3726.         Prototype:  (strcmp str1 str2)
  3727.         Arguments:  str1      <string>            the string compare
  3728.                     str2      <string>            the string compare
  3729.         Returns:    Value     Meaning             
  3730.                     -1        str1 < str2
  3731.                     0         str1 = str2
  3732.                     1         str1 > str2
  3733.         Notes:
  3734.         Example:    (strcmp "Hello World" "HELLO WORLD") returns 1
  3735.  
  3736.                      ----------------------------------------
  3737.  
  3738.         Function:     strcspn                                      String
  3739.  
  3740.         Synopsis:   determine the length of the prefix of str1 made
  3741.                     entirely of chars not in str2
  3742.         Prototype:  (strcspn str1 str2)
  3743.         Arguments:  str1      <string>            the main string
  3744.                     str2      <string>            the string of chars to
  3745.                                                   test
  3746.         Returns:    <string>  the length of the segment of str1 that
  3747.                               begins in the beginning of the string and
  3748.                               is made up entirely of characters that do
  3749.                               not occur in str2
  3750.         Notes:
  3751.         Example:    (strcspn "AABBCCDDEE" "AB") ;;; returns 0
  3752.                     (strcspn "AABBCCDDEE" "D") ;;; returns 6
  3753.  
  3754.                      ----------------------------------------
  3755.  
  3756.  
  3757.         ELF Functions                                             page 56
  3758.  
  3759.  
  3760.         Function:     strdate                                      String
  3761.  
  3762.         Synopsis:   returns the current date from the internal clock as a
  3763.                     formatted string
  3764.         Prototype:  (strdate)
  3765.         Arguments:  none
  3766.         Returns:    date string as MM-DD-YY
  3767.         Notes:
  3768.         Example:    (printf "\nToday is %s" (strdate))
  3769.  
  3770.                      ----------------------------------------
  3771.  
  3772.         Function:     strdela                                      String
  3773.  
  3774.         Synopsis:   delete all occurrences of chars in str2 from str1
  3775.         Prototype:  (strdela str1 str2)
  3776.         Arguments:  str1      <string>            string containing chars
  3777.                                                   to be deleted
  3778.                     str2      <string>            string containing chars
  3779.                                                   to delete
  3780.         Returns:    <string>  str1 with chars from str2 deleted
  3781.         Notes:
  3782.         Example:    (setq str (strdela "This\t is a test;;::///"
  3783.                     "\t;:/"))
  3784.  
  3785.                      ----------------------------------------
  3786.  
  3787.         Function:     strget                                       String
  3788.  
  3789.         Synopsis:   edit a string on the text screen with cursor
  3790.                     positioning and editing, background mask, color
  3791.                     attribute control, and on line help.
  3792.         Prototype:  (strget str len curpos mask attr ...)
  3793.         Arguments:  str       <string>            optional string to edit
  3794.                                                   (default - "")
  3795.                     curpos    <int>               optional starting
  3796.                                                   cursor position within
  3797.                                                   string (default - 0)
  3798.                     len       <int>               optional edit field
  3799.                                                   length (default 80)
  3800.                     mask      <int>               optional background
  3801.                                                   mask character (default
  3802.                                                   - " ")
  3803.                     attr      <int>               optional color
  3804.                                                   attribute (default -
  3805.                                                   "color: symbol)
  3806.                     ...       <int>               optional keycodes which
  3807.                                                   will cause strget to
  3808.                                                   exit (in addition to
  3809.                                                   <Esc>, <Up>, <Down>,
  3810.                                                   <Enter>, and <Ctrl-
  3811.                                                   Enter>
  3812.  
  3813.  
  3814.         ELF Functions                                             page 57
  3815.  
  3816.  
  3817.         Returns:    <list>
  3818.                     <string>  the edited string
  3819.                     <int>     keycode of key causing function to exit
  3820.                     <int>     cursor position within string at exit
  3821.         Notes:      strget prints the string and mask at the cursor
  3822.                     position then waits for user input. The cursor is
  3823.                     placed at <curpos> within the string.
  3824.                     Insert/overwrite mode is saved between calls to
  3825.                     strget. If a string longer than <len> is edited the
  3826.                     string will "ticker tape", the maximum string length
  3827.                     is 255 characters. Response to keystrokes is as
  3828.                     follows:
  3829.                     Key       Action              
  3830.                     <Left>    move cursor left
  3831.                     <Right>   move cursor right
  3832.                     <Up>      exit
  3833.                     <Down>    exit
  3834.                     <Enter>   exit
  3835.                     <Ctrl-Enter>   exit
  3836.                     <F1>      Display help screen, if the symbol
  3837.                               EDIT_HELP is defined, then the contants of
  3838.                               that symbol is displayed. In versions
  3839.                               prior to release 12, the function
  3840.                               (set_edit_help) can be used to set the
  3841.                               user defined help. 
  3842.  
  3843.                               If the user presses F1 the second time,
  3844.                               then the default help screen is displayed.
  3845.                     <Ctrl-Rt> word right
  3846.                     <Ctrl-Lt> word left
  3847.                     <Ctrl-Y>  delete from cursor to end of line
  3848.                     <End>     move to end
  3849.                     <Home>    move to start
  3850.                     <Ins>     toggle insert / overwrite mode
  3851.         Example:    (setq name (strget name 25 0 (ascii "_") 23 15360);;;
  3852.                     <F2> will cause strget to exit strget also
  3853.  
  3854.                      ----------------------------------------
  3855.  
  3856.         Function:     stricmp                                      String
  3857.  
  3858.         Synopsis:   compares two strings for equality (case insensitive)
  3859.         Prototype:  (stricmp str1 str2)
  3860.         Arguments:  str1      <string>            the string compare
  3861.                     str2      <string>            the string compare
  3862.         Returns:    Value     Meaning             
  3863.                     -1        str1 < str2
  3864.                     0         str1 = str2
  3865.                     1         str1 > str2
  3866.         Notes:
  3867.         Example:    (stricmp "Hello World" "HELLO WORLD") returns 0
  3868.  
  3869.                      ----------------------------------------
  3870.  
  3871.  
  3872.         ELF Functions                                             page 58
  3873.  
  3874.  
  3875.         Function:     strncpy                                      String
  3876.  
  3877.         Synopsis:   copies the first n characters of a string
  3878.         Prototype:  (strncpy str n)
  3879.         Arguments:  str       <string>            the string to copy
  3880.                     n         <int>               the number of
  3881.                                                   characters to copy
  3882.         Returns:    <string>  the copied string
  3883.         Notes:
  3884.         Example:    (strncpy "Hello World" 8) ;;; returns "Hello Wo"
  3885.  
  3886.                      ----------------------------------------
  3887.  
  3888.         Function:     strnset                                      String
  3889.  
  3890.         Synopsis:   fills a string
  3891.         Prototype:  (strnset char len)
  3892.         Arguments:  char      <int>               character to use to
  3893.                                                   fill string
  3894.                     len       <int>               number of characters
  3895.         Returns:    <string>  the filled string
  3896.         Notes:
  3897.         Example:    (strnset (ascii " ") 40) ;;; returns a string of 40
  3898.                     spaces
  3899.  
  3900.                      ----------------------------------------
  3901.  
  3902.         Function:     strpbrk                                      String
  3903.  
  3904.         Synopsis:   returns a substring of the first occurrence of any
  3905.                     character of str2 in str1
  3906.         Prototype:  (strstr str1 str2)
  3907.         Arguments:  str1      <string>            the string to search
  3908.                     str2      <string>            the substring
  3909.         Returns:    <string>  the substring starting in any char in str2
  3910.         Notes:
  3911.         Example:    (strpbrk "AABBCCDDEE" "CCBB") ;;; returns "BBCCDDEE"
  3912.  
  3913.                      ----------------------------------------
  3914.  
  3915.         Function:     strrchr                                      String
  3916.  
  3917.         Synopsis:   finds the last occurrence of ch in str and returns a
  3918.                     substring starting at that character
  3919.         Prototype:  (strrchr str ch)
  3920.         Arguments:  str       <string>            the string to search
  3921.                     ch        <int>               the character to search
  3922.                                                   for
  3923.         Returns:    <string>  the substring starting in ch
  3924.         Notes:
  3925.         Example:    (strrchr "AABBCC" (ascii "B")) ;;; returns "BCC"
  3926.  
  3927.                      ----------------------------------------
  3928.  
  3929.  
  3930.         ELF Functions                                             page 59
  3931.  
  3932.  
  3933.         Function:     strrev                                       String
  3934.  
  3935.         Synopsis:   returns the string argument with the character order
  3936.                     reversed
  3937.         Prototype:  (strrev str)
  3938.         Arguments:  str       <string>            string to be reverses
  3939.         Returns:    <string>  the reverses string
  3940.         Notes:
  3941.         Example:    (setq revs (strrev "ABCDE"));;; returns "EDCBA"
  3942.  
  3943.                      ----------------------------------------
  3944.  
  3945.         Function:     strspn                                       String
  3946.  
  3947.         Synopsis:   determine the length of the prefix of str1 made
  3948.                     entirely of chars in str2
  3949.         Prototype:  (strspn str1 str2)
  3950.         Arguments:  str1      <string>            the main string
  3951.                     str2      <string>            the string of chars to
  3952.                                                   test
  3953.         Returns:    <string>  the length of the segment of str1 that
  3954.                               begins in the beginning of the string and
  3955.                               is made up entirely of characters that
  3956.                               occur in str2
  3957.         Notes:
  3958.         Example:    (strspn "AABBCCDDEE" "AB") ;;; returns 4
  3959.  
  3960.                      ----------------------------------------
  3961.  
  3962.         Function:     strstr                                       String
  3963.  
  3964.         Synopsis:   returns a substring of the first occurrence of str2
  3965.                     in str1
  3966.         Prototype:  (strstr str1 str2)
  3967.         Arguments:  str1      <string>            the string to search
  3968.                     str2      <string>            the substring
  3969.         Returns:    <string>  the substring starting in str2
  3970.         Notes:
  3971.         Example:    (strstr "AABBCCDDEE" "CC") ;;; returns "CCDDEE"
  3972.  
  3973.                      ----------------------------------------
  3974.  
  3975.         Function:     strswap                                      String
  3976.  
  3977.         Synopsis:   swaps all occurrences of char1 with char2 in str
  3978.         Prototype:  (strswap str char1 char2)
  3979.         Arguments:  str       <string>            string to search
  3980.                     char1     <int>               character to search for
  3981.         Returns:    char2     <int>               character to substitute
  3982.                                                   for char1
  3983.  
  3984.  
  3985.         ELF Functions                                             page 60
  3986.  
  3987.  
  3988.         Notes:      <string>  the string with swapped chars
  3989.         Example:
  3990.  
  3991.                      ----------------------------------------
  3992.  
  3993.         Function:     strtime                                      String
  3994.  
  3995.         Synopsis:   returns the current time from the internal clock as a
  3996.                     formatted string
  3997.         Prototype:  (strtime)
  3998.         Arguments:  none
  3999.         Returns:    time string as HH:MM:SS
  4000.         Notes:
  4001.         Example:    (printf "\nThe current time is %s" (strtime))
  4002.  
  4003.                      ----------------------------------------
  4004.  
  4005.         Function:     strtok                                       String
  4006.  
  4007.         Synopsis:   returns the first substring of str1 from token
  4008.                     delimiters in str2. subsequent calls after the first
  4009.                     with no arguments will return the second and any
  4010.                     further substrings
  4011.         Prototype:  (strtok str1 str2)
  4012.         Arguments:  str1      <string>            the string to search
  4013.                     str2      <string>            the string containing
  4014.                                                   tokens delimiters
  4015.         Returns:    <string>  the substring of str1 up but not including
  4016.                               any chars in str2
  4017.         Notes:
  4018.         Example:    (setq s2 (strtok "AA;BB;CC;DD;EE" ";"))
  4019.                               ;;; returns "AA" and saves "BB;CC;DD;EE"
  4020.                               internally
  4021.                     (while (boundp 's2)
  4022.                       (print s2)
  4023.                       (setq s2 (strtok)) ;; then returns "BB", etc
  4024.                     )
  4025.  
  4026.                      ----------------------------------------
  4027.  
  4028.         Function:     strtrim                                      String
  4029.  
  4030.         Synopsis:   trim white space (all char values < '!') from the
  4031.                     beginning (left side) and end (right side); and
  4032.                     compresses white space within a string to a single
  4033.                     space between words
  4034.         Prototype:  (strtrim str)
  4035.         Arguments:  str       <string> the string to be trimmed
  4036.         Returns:    <string>  trimmed string if success or nil if error
  4037.  
  4038.  
  4039.         ELF Functions                                             page 61
  4040.  
  4041.  
  4042.         Notes:
  4043.         Example:    (strtrim "\t\t     Hello   \t  world\t     ")
  4044.                     returns: "Hello World"
  4045.  
  4046.                      ----------------------------------------
  4047.  
  4048.         Function:     strtriml                                     String
  4049.  
  4050.         Synopsis:   trim white space from the beginning (left side) of a
  4051.                     string
  4052.         Prototype:  (strtriml str)
  4053.         Arguments:  str       <string> the string to be trimmed
  4054.         Returns:    <string>  trimmed string if success or nil if error
  4055.         Notes:
  4056.         Example:    (strtriml "\t\t     Hello world")
  4057.                     returns: "Hello World"
  4058.  
  4059.                      ----------------------------------------
  4060.  
  4061.         Function:     strtrimr                                     String
  4062.  
  4063.         Synopsis:   trim white space from the end (right side) of a
  4064.                     string
  4065.         Prototype:  (strtrimr str)
  4066.         Arguments:  str       <string> the string to be trimmed
  4067.         Returns:    <string>  trimmed string if success or nil if error
  4068.         Notes:
  4069.         Example:    (strtrimr "Hello world\t     ")
  4070.                     returns: "Hello World"
  4071.  
  4072.                      ----------------------------------------
  4073.  
  4074.         Function:     tolower                                      String
  4075.  
  4076.         Synopsis:
  4077.         Prototype:  (tolower char)
  4078.         Arguments:  char      <int>
  4079.         Returns:    <char>    character converted to lower case
  4080.         Notes:
  4081.         Example:    (chr(tolower(ascii "A"))) ;;; returns: "a"
  4082.  
  4083.                      ----------------------------------------
  4084.  
  4085.         Function:     toupper                                      String
  4086.  
  4087.         Synopsis:
  4088.         Prototype:  (toupper char)
  4089.         Arguments:  char      <int>
  4090.         Returns:    <char>    character converted to upper case
  4091.         Notes:
  4092.         Example:    (chr(toupper(ascii "a"))) ;;; returns: "A"
  4093.  
  4094.                      ----------------------------------------
  4095.  
  4096.  
  4097.         ELF Functions                                             page 62
  4098.  
  4099.  
  4100.         Character Classification Functions
  4101.  
  4102.         The character  classification functions are  equivalent to  those
  4103.         from the "C" function library except that they return nil instead
  4104.         of 0  to indicate  a FALSE  condition. This  allows the  AutoLISP
  4105.         programmer to test the expression directly with an (if) function.
  4106.  
  4107.         eg.       (If(IsUpper ch) (do something))
  4108.  
  4109.                      ----------------------------------------
  4110.  
  4111.         Function:     isalnum                                   Character
  4112.  
  4113.         Synopsis:   returns a non-zero value if argument is a letter or
  4114.                     digit
  4115.         Prototype:  (isalnum char)
  4116.         Arguments:  char      <int>
  4117.         Returns:    <int>     non-zero if true, nil otherwise
  4118.         Notes:
  4119.         Example:
  4120.  
  4121.                      ----------------------------------------
  4122.  
  4123.         Function:     isascii                                   Character
  4124.  
  4125.         Synopsis:   returns a non-zero value if argument is an ASCII
  4126.                     character
  4127.         Prototype:  (isascii char)
  4128.         Arguments:  char      <int>
  4129.         Returns:    <int>     non-zero if true, nil otherwise
  4130.         Notes:
  4131.         Example:
  4132.  
  4133.                      ----------------------------------------
  4134.  
  4135.         Function:     iscntl                                    Character
  4136.  
  4137.         Synopsis:   returns a non-zero value if argument is a control
  4138.                     character
  4139.         Prototype:  (iscntl char)
  4140.         Arguments:  char      <int>
  4141.         Returns:    <int>     non-zero if true, nil otherwise
  4142.         Notes:
  4143.         Example:
  4144.  
  4145.                      ----------------------------------------
  4146.  
  4147.         Function:     isdigit                                   Character
  4148.  
  4149.         Synopsis:   returns a non-zero value if argument is a numeric
  4150.                     digit
  4151.         Prototype:  (isdigit char)
  4152.         Arguments:  char      <int>
  4153.  
  4154.  
  4155.         ELF Functions                                             page 63
  4156.  
  4157.  
  4158.         Returns:    <int>     non-zero if true, nil otherwise
  4159.         Notes:
  4160.         Example:
  4161.  
  4162.                      ----------------------------------------
  4163.  
  4164.         Function:     isgraph                                   Character
  4165.  
  4166.         Synopsis:   returns a non-zero value if argument is a visible
  4167.                     printable character
  4168.         Prototype:  (isgraph char)
  4169.         Arguments:  char      <int>
  4170.         Returns:    <int>     non-zero if true, nil otherwise
  4171.         Notes:
  4172.         Example:
  4173.  
  4174.                      ----------------------------------------
  4175.  
  4176.         Function:     islower                                   Character
  4177.  
  4178.         Synopsis:   returns a non-zero value if argument is a lower case
  4179.                     letter
  4180.         Prototype:  (islower char)
  4181.         Arguments:  char      <int>
  4182.         Returns:    <int>     non-zero if true, nil otherwise
  4183.         Notes:
  4184.         Example:
  4185.  
  4186.                      ----------------------------------------
  4187.  
  4188.         Function:     isodigit                                  Character
  4189.  
  4190.         Synopsis:   returns a non-zero value if argument is an octal
  4191.                     digit (0-7)
  4192.         Prototype:  (isodigit char)
  4193.         Arguments:  char      <int>
  4194.         Returns:    <int>     non-zero if true, nil otherwise
  4195.         Notes:
  4196.         Example:
  4197.  
  4198.                      ----------------------------------------
  4199.  
  4200.         Function:     isprint                                   Character
  4201.  
  4202.         Synopsis:   returns a non-zero value if argument is a printable
  4203.                     character
  4204.         Prototype:  (isprint char)
  4205.         Arguments:  char      <int>
  4206.         Returns:    <int>     non-zero if true, nil otherwise
  4207.         Notes:
  4208.         Example:
  4209.  
  4210.                      ----------------------------------------
  4211.  
  4212.  
  4213.         ELF Functions                                             page 64
  4214.  
  4215.  
  4216.         Function:     ispunct                                   Character
  4217.  
  4218.         Synopsis:   returns a non-zero value if argument is a punctuation
  4219.                     character
  4220.         Prototype:  (ispunct char)
  4221.         Arguments:  char      <int>
  4222.         Returns:    <int>     non-zero if true, nil otherwise
  4223.         Notes:
  4224.         Example:
  4225.  
  4226.                      ----------------------------------------
  4227.  
  4228.         Function:     isspace                                   Character
  4229.  
  4230.         Synopsis:   returns a non-zero value if argument is a white-space
  4231.                     character (space, tab, newline, etc)
  4232.         Prototype:  (isspace char)
  4233.         Arguments:  char      <int>
  4234.         Returns:    <int>     non-zero if true, nil otherwise
  4235.         Notes:
  4236.         Example:
  4237.  
  4238.                      ----------------------------------------
  4239.  
  4240.         Function:     isupper                                   Character
  4241.  
  4242.         Synopsis:   returns a non-zero value if argument is an upper case
  4243.                     letter
  4244.         Prototype:  (isupper char)
  4245.         Arguments:  char      <int>
  4246.         Returns:    <int>     non-zero if true, nil otherwise
  4247.         Notes:
  4248.         Example:
  4249.  
  4250.                      ----------------------------------------
  4251.  
  4252.         Function:     isxdigit                                  Character
  4253.  
  4254.         Synopsis:   returns a non-zero value if argument is a hexadecimal
  4255.                     digit (0-F)
  4256.         Prototype:  (isxdigit char)
  4257.         Arguments:  char      <int>
  4258.         Returns:    <int>     non-zero if true, nil otherwise
  4259.         Notes:
  4260.         Example:
  4261.  
  4262.                      ----------------------------------------
  4263.  
  4264.         Entity Creation
  4265.  
  4266.         The ELF  entity creation  functions provide  a means  to make  an
  4267.         entity with a single function call using the ADS/AutoLISP entmake
  4268.  
  4269.  
  4270.         ELF Functions                                             page 65
  4271.  
  4272.  
  4273.         facility. These  functions are at  least twice  as fast as  using
  4274.         (command) and easier to use than (entmake).
  4275.  
  4276.                      ----------------------------------------
  4277.  
  4278.         Function:     arc                                          Entity
  4279.  
  4280.         Synopsis:   create an arc entity
  4281.         Prototype:  (arc cen rad sang eang layer)
  4282.         Arguments:  cen       <point>             the 2D or 3D center
  4283.                                                   point of the arc in the
  4284.                                                   current UCS. (0 is
  4285.                                                   assumed if cen is a 2D
  4286.                                                   point)
  4287.                     rad       <real>              the radius of the arc
  4288.                     sang      <read>              the starting angle in
  4289.                                                   radians
  4290.                     eang      <read>              the ending angle in
  4291.                                                   radians
  4292.                     layer     <string>            optional layer name on
  4293.                                                   which to create the arc
  4294.         Returns:    1 if successful or nil otherwise
  4295.         Notes:
  4296.         Example:    (arc '(2.0 3.0) 1.0 (dtr 90.0) (dtr 270.0) "MYLAYER")
  4297.  
  4298.                      ----------------------------------------
  4299.  
  4300.         Function:     circle                                       Entity
  4301.  
  4302.         Synopsis:   create a circle entity
  4303.         Prototype:  (circle cen rad layer)
  4304.         Arguments:  cen       <point>             the 2D or 3D center
  4305.                                                   point of the arc in the
  4306.                                                   current UCS. (0 is
  4307.                                                   assumed if cen is a 2D
  4308.                                                   point)
  4309.                     rad       <real>              the radius of the
  4310.                                                   circle
  4311.                     layer     <string>            optional layer name on
  4312.                                                   which to create the
  4313.                                                   circle
  4314.         Returns:    1 if successful or nil otherwise
  4315.         Notes:
  4316.         Example:    (circle '(2.0 3.0) 1.0 "MYLAYER")
  4317.  
  4318.                      ----------------------------------------
  4319.  
  4320.         Function:     grid                                         Entity
  4321.  
  4322.         Synopsis:   create a grid of line entities
  4323.         Prototype:  (grid pnt cols rows colwidth rowheight layer)
  4324.  
  4325.  
  4326.         ELF Functions                                             page 66
  4327.  
  4328.  
  4329.         Arguments:  pnt       <point>             the 2D or 3D center
  4330.                                                   point of the lower left
  4331.                                                   corner in the current
  4332.                                                   UCS. (0 is assumed if
  4333.                                                   pnt is a 2D point)
  4334.                     cols      <int>               the number of grid
  4335.                                                   columns
  4336.                     rows      <int>               the number of grid rows
  4337.                     colwidth  <real>              the spacing of columns
  4338.                     rowheight <real>              the spacing of rows
  4339.                     layer     <string>            optional layer name on
  4340.                                                   which to create the
  4341.                                                   grid
  4342.         Returns:    1 if successful or nil otherwise
  4343.         Notes:
  4344.         Example:    (grid '(2.0 3.0) 10 10 0.5 0.5 "MYLAYER")
  4345.  
  4346.                      ----------------------------------------
  4347.  
  4348.         Function:     line                                         Entity
  4349.  
  4350.         Synopsis:   create a line entity
  4351.         Prototype:  (line from to layer)
  4352.         Arguments:  from      <point>             the starting point of
  4353.                                                   the line.
  4354.                     to        <point>             the ending point of the
  4355.                                                   line.
  4356.                     layer     <string>            optional layer name on
  4357.                                                   which to create the
  4358.                                                   circle
  4359.         Returns:    1 if successful or nil otherwise
  4360.         Notes:
  4361.         Example:    (line '(0.0 0.0) '(1.0 1.0) "MYLAYER")
  4362.  
  4363.                      ----------------------------------------
  4364.  
  4365.         Function:     point                                        Entity
  4366.  
  4367.         Synopsis:   create a point entity
  4368.         Prototype:  (point pt layer)
  4369.         Arguments:  pt        <point>             the coordinates of the
  4370.                                                   point
  4371.                     layer     <string>            optional layer name on
  4372.                                                   which to create the
  4373.                                                   circle
  4374.         Returns:    1 if successful or nil otherwise
  4375.         Notes:
  4376.         Example:    (point '(5.0 8.0) "MYLAYER")
  4377.  
  4378.                      ----------------------------------------
  4379.  
  4380.  
  4381.         ELF Functions                                             page 67
  4382.  
  4383.  
  4384.         Function:     pline                                        Entity
  4385.  
  4386.         Synopsis:   create a polyline entity
  4387.         Prototype:  (pline vlist layer width flags)
  4388.         Arguments:  vlist     <point>             a list of 2d or 3d
  4389.                                                   point coordinates
  4390.                     layer     <string>            optional layer name on
  4391.                                                   which to create the
  4392.                                                   circle
  4393.                     width     <real>              optional line width -
  4394.                               default 0
  4395.                     flags     <int>               bit coded group 70
  4396.                               codes (see AutoCAD DXF file docs)
  4397.         Returns:    1 if successful or nil otherwise
  4398.         Notes:
  4399.         Example:    (pline (list(0.0 0.0)(1.0 0.0)(1.0 1.0)) 0.0 1) ;
  4400.                     draws a closed polyline
  4401.  
  4402.                      ----------------------------------------
  4403.  
  4404.         Function:     rect                                         Entity
  4405.  
  4406.         Synopsis:   create a polygon rectangle entity
  4407.         Prototype:  (rect pt width height layer)
  4408.         Arguments:  pt        <point>             the origin point
  4409.                     width     <real>              width of the rectangle
  4410.                                                   (x axis)
  4411.                     height    <real>              height of the rectangle
  4412.                                                   (y axis)
  4413.                     layer     <string>            optional layer name on
  4414.                                                   which to create the
  4415.                                                   entity
  4416.         Returns:    1 if successful or nil otherwise
  4417.         Notes:
  4418.         Example:    (rect '(0.0 0.0) 1.0 2.0 "MYLAYER")
  4419.  
  4420.                      ----------------------------------------
  4421.  
  4422.         Function:     solid                                        Entity
  4423.  
  4424.         Synopsis:   create a solid entity
  4425.         Prototype:  (solid pt1 pt2 pt3 pt4 layer)
  4426.         Arguments:  pt1       <point>             the first point
  4427.                     pt2       <point>             the second point
  4428.                     pt3       <point>             the third point
  4429.                     pt4       <point>             optional - the fourth
  4430.                                                   point (default - third
  4431.                                                   point value)
  4432.                     layer     <string>            optional layer name on
  4433.                                                   which to create the
  4434.                                                   entity
  4435.         Returns:    1 if successful or nil otherwise
  4436.  
  4437.  
  4438.         ELF Functions                                             page 68
  4439.  
  4440.  
  4441.         Notes:
  4442.         Example:    (solid '(0.0 0.0) '(0.0 1.0) '(1.0 1.0) '(1.0 0.0)
  4443.                     "MYLAYER")
  4444.  
  4445.                      ----------------------------------------
  4446.  
  4447.         Function:     text                                         Entity
  4448.  
  4449.         Synopsis:   create a text entity
  4450.         Prototype:  (text pt str height layer rot obl flg hal val apt)
  4451.         Arguments:  pt        <point>             the text insertion
  4452.                                                   point
  4453.                     str       <string>            the text string
  4454.                     height    <real>              height of the text
  4455.                     layer     <string>            optional layer name on
  4456.                                                   which to create the
  4457.                                                   entity
  4458.                     rot       <real>              optional rotation angle
  4459.                                                   in radians
  4460.                     obl       <real>              optional oblique angle
  4461.                                                   in radians
  4462.                     flg       <int>               optional text
  4463.                                                   generation flag
  4464.                                                   (2=backward, 4=upside
  4465.                                                   down)
  4466.                     hal       <int>               optional horizontal
  4467.                                                   alignment (0=left,
  4468.                                                   1=center, 2=right,
  4469.                                                   3=aligned, 4=middle,
  4470.                                                   5=fit)
  4471.                     val       <int>               optional vertical
  4472.                                                   alignment (0=baseline,
  4473.                                                   1=bottom, 2=middle,
  4474.                                                   3=top)
  4475.                     apt       <int>               optional alignment
  4476.                                                   point (default =
  4477.                                                   insertion point)
  4478.  
  4479.         Returns:    1 if successful or nil otherwise
  4480.         Notes:
  4481.         Example:    (text '(0.0 0.0) "Hello World" 0.5 "MYLAYER" 0.0 0.0
  4482.                     0 1 0)
  4483.  
  4484.                      ----------------------------------------
  4485.  
  4486.  
  4487.         ELF Functions                                             page 69
  4488.  
  4489.  
  4490.         Function:
  4491.  
  4492.         Selection Set
  4493.  
  4494.         These  functions  provide 1)  a simple  selection set  filter; 2)
  4495.         access to  the AutoCAD dragger;  3) Entity  transformation of  an
  4496.         entire selection set; 4) selection set combination.
  4497.  
  4498.                      ----------------------------------------
  4499.  
  4500.         Function:     ss_filter                             Selection Set
  4501.  
  4502.         Synopsis:   filters a selection set removing all entities except
  4503.                     those in a list of entity types
  4504.         Prototype:  (ss_filter ss slist)
  4505.         Arguments:  ss        <ss>                a selection set
  4506.                     slist     <slist>             a list of entity types
  4507.         Returns:    <ss>      the modified selection set
  4508.         Notes:      the selection set is modified in place
  4509.         Example:    (ss_filter ss '("LINE" "CIRCLE")) ; removes all
  4510.                     entities except lines and circles
  4511.  
  4512.                      ----------------------------------------
  4513.  
  4514.         Function:     ss_move                               Selection Set
  4515.  
  4516.         Synopsis:   uses the AutoCAD dragger to move a selection set
  4517.         Prototype:  (ss_move ss pt)
  4518.         Arguments:  ss        <ss>                selection set to move
  4519.                     pt        <point>             base point
  4520.         Returns:    <point>   the point that the user selected to end
  4521.                     ss_move
  4522.         Notes:      ss_move does not actually move the entities, but
  4523.                     displays a xor vector image of the original entities
  4524.                     and rubber band that moves with the graphics cursor.
  4525.                     The returned point can then be used by the programmer
  4526.                     to perform custom entity transformations using
  4527.                     "ss_xform" or any of AutoCAD's entity
  4528.                     creation/modification commands(see sample lisp code
  4529.                     in the file SELSET.LSP).
  4530.         Example:    (setq newpt(ss_move ss (getpoint))) ; get point to
  4531.                     move to
  4532.  
  4533.                      ----------------------------------------
  4534.  
  4535.         Function:     ss_rotate                             Selection Set
  4536.  
  4537.         Synopsis:   uses the AutoCAD dragger to rotate a selection set
  4538.         Prototype:  (ss_rotate ss pt)
  4539.         Arguments:  ss        <ss>                selection set to rotate
  4540.                     pt        <point>             base point
  4541.         Returns:    <point>   the point that the user selected to end
  4542.                     ss_rotate
  4543.  
  4544.  
  4545.         ELF Functions                                             page 70
  4546.  
  4547.  
  4548.         Notes:      see ss_move
  4549.         Example:    see ss_move
  4550.  
  4551.                      ----------------------------------------
  4552.  
  4553.         Function:     ss_scale                              Selection Set
  4554.  
  4555.         Synopsis:   uses the AutoCAD dragger to scale a selection set
  4556.         Prototype:  (ss_scale ss pt)
  4557.         Arguments:  ss        <ss>                selection set to scale
  4558.                     pt        <point>             base point
  4559.         Returns:    <point>   the point that the user selected to end
  4560.                     ss_scale
  4561.         Notes:      see ss_move
  4562.         Example:    see ss_move
  4563.  
  4564.                      ----------------------------------------
  4565.  
  4566.         Function:     ss_union                                Section Set
  4567.  
  4568.         Synopsis:   merges all entities in two selection sets into a new
  4569.                     third selection set
  4570.         Prototype:  (ss_union ss1 ss2)
  4571.         Arguments:  ss1       <ss>                first selection set
  4572.                     ss2       <ss>                second selection set
  4573.         Returns:    <ss>      a new selection set with all entities from
  4574.                     ss1 and ss2
  4575.         Notes:
  4576.         Example:    (setq ss_all (ss_union ss1 ss2)) ;merge ss1 and ss2
  4577.  
  4578.                      ----------------------------------------
  4579.  
  4580.         Function:     ss_inters                               Section Set
  4581.  
  4582.         Synopsis:   merges all entities common to two selection sets into
  4583.                     a new third selection set
  4584.         Prototype:  (ss_inters ss1 ss2)
  4585.         Arguments:  ss1       <ss>                first selection set
  4586.                     ss1       <ss>                second selection set
  4587.         Returns:    <ss>      a new selection set containing entities
  4588.                     common to both ss1 and ss2
  4589.         Notes:
  4590.         Example:    (setq ss_common (ss_inters ss1 ss2))
  4591.  
  4592.                      ----------------------------------------
  4593.  
  4594.         Function:     ss_diff                                 Section Set
  4595.  
  4596.         Synopsis:   creates a new selection from two selection sets by
  4597.                     copying the first and removing entities found in the
  4598.                     second from the new selection set.
  4599.         Prototype:  (ss_diff ss1 ss2)
  4600.  
  4601.  
  4602.         ELF Functions                                             page 71
  4603.  
  4604.  
  4605.         Arguments:  ss1       <ss>                first selection set
  4606.                     ss1       <ss>                second selection set
  4607.         Returns:    <ss>      a new selection set as ss1 - ss2
  4608.         Notes:
  4609.         Example:    (setq ss3 (ss_diff ss1 ss2)) ;remove entities in ss2
  4610.                     from ss1
  4611.  
  4612.                      ----------------------------------------
  4613.  
  4614.         Function:     ss_xform                                Section Set
  4615.  
  4616.         Synopsis:   transform entities in a selection set using a
  4617.                     transformation matrix
  4618.         Prototype:  (ss_xform ss mat)
  4619.         Arguments:  ss        <ss>                the selection set to
  4620.                     transform
  4621.                     mat       <list>              the transformation
  4622.                     matrix to use
  4623.         Returns:    1 if successful, nil otherwise
  4624.         Notes:      the transformation matrix is a 4 X 4 list of real
  4625.                     values that determine how the entities will be
  4626.                     transformed. See "Transformation Matrices" in the
  4627.                     AutoCAD "ADS Programmers Reference Maunal" for a full
  4628.                     explanation, the dragger examples showing how the
  4629.                     functions and amtricies are used.
  4630.         Example:    (ss_xform ss mat)) ;
  4631.  
  4632.                      ----------------------------------------
  4633.  
  4634.         Function:
  4635.         Utility / Miscellaneous Functions
  4636.  
  4637.         Utility  functions include those to control  the PC speaker, read
  4638.         the PC  system clock, for  program debugging, and  to execute DOS
  4639.         programs under program control.
  4640.  
  4641.                      ----------------------------------------
  4642.  
  4643.         Function:     adsdump                                     Utility
  4644.  
  4645.         Synopsis:   prints the data type and value of an AutoLISP symbol
  4646.         Prototype:  (adsdump sym)
  4647.         Arguments:  sym       <symbol>            an AutoLISP symbol
  4648.         Returns:
  4649.         Notes:
  4650.         Example:    (setq x (load_dirs))
  4651.                     (adsdump x)
  4652.  
  4653.                      ----------------------------------------
  4654.  
  4655.  
  4656.         ELF Functions                                             page 72
  4657.  
  4658.  
  4659.         Function:     beep                                        Utility
  4660.  
  4661.         Synopsis:   sound a beep on the PC speaker for optional frequency
  4662.                     and duration
  4663.         Prototype:  (beep freq duration)
  4664.         Arguments:  freq      <int>               frequency in hertz
  4665.                     duration  <real>              length/duration of the
  4666.                                                   beep in decimal seconds
  4667.         Returns:
  4668.         Notes:
  4669.         Example:    (beep 440 1.0) ;;; beep middle A for one second
  4670.  
  4671.                      ----------------------------------------
  4672.  
  4673.         Function:     clock                                       Utility
  4674.  
  4675.         Synopsis:   reads the current internal clock
  4676.         Prototype:  (clock)
  4677.         Arguments:  none
  4678.         Returns:    <real>    the current internal clock register
  4679.                               reading in seconds (0.01 second precision)
  4680.         Notes:
  4681.         Example:    (setq end (+(clock) 2.5)) ;;; delay for 2.5 seconds
  4682.                     (while (> end (clock)))
  4683.  
  4684.                      ----------------------------------------
  4685.  
  4686.         Function:     exit                                        Utility
  4687.  
  4688.         Synopsis:   cancels execution and returns to the Command: prompt
  4689.         Prototype:  (exit)
  4690.         Arguments:
  4691.         Returns:
  4692.         Notes:      duplicates the (exit) function available in release
  4693.                     12 for pre-release 12 versions
  4694.         Example:
  4695.  
  4696.                      ----------------------------------------
  4697.  
  4698.         Function:     getver                                      Utility
  4699.  
  4700.         Synopsis:   returns the ELF, AutoCAD, and DOS version numbers
  4701.         Prototype:  (getver)
  4702.         Arguments:
  4703.         Returns:    <list>
  4704.                     <real>    ELF version number
  4705.                     <real>    AutoCAD version number
  4706.         Notes:      <real>    DOS version number
  4707.         Example:
  4708.  
  4709.                      ----------------------------------------
  4710.  
  4711.  
  4712.         ELF Functions                                             page 73
  4713.  
  4714.  
  4715.         Function:     last_error                                  Utility
  4716.  
  4717.         Synopsis:   returns the last internal error message
  4718.         Prototype:  (last_error)
  4719.         Arguments:
  4720.         Returns:    <string>  the error message
  4721.         Notes:      with release 12 the symbol *LAST_ERROR* also contains
  4722.                     this message
  4723.         Example:    (printf "\nThe last ELF error was %s" (last_error))
  4724.  
  4725.                      ----------------------------------------
  4726.  
  4727.         Function:     initialize                                  Utility
  4728.  
  4729.         Synopsis:   resets ELF and loads ELF.INI symbols
  4730.         Prototype:  (initialize)
  4731.         Arguments:
  4732.         Returns:
  4733.         Notes:      the first ELF function call will also call
  4734.                     (initialize). Necessary only if you wish to load the
  4735.                     symbols from ELF.INI for use prior to calling any ELF
  4736.                     function.
  4737.         Example:
  4738.  
  4739.                      ----------------------------------------
  4740.  
  4741.         Function:     nosound                                     Utility
  4742.  
  4743.         Synopsis:   turns off the PC speaker after a sound function
  4744.         Prototype:  (nosound)
  4745.         Arguments:
  4746.         Returns:
  4747.         Notes:
  4748.         Example:    see sound
  4749.  
  4750.                      ----------------------------------------
  4751.  
  4752.         Function:     pause_key                                   Utility
  4753.  
  4754.         Synopsis:   prints "press any key to continue..." and waits for a
  4755.                     keystroke
  4756.         Prototype:  (pause_key)
  4757.         Arguments:
  4758.         Returns:
  4759.         Notes:
  4760.         Example:
  4761.  
  4762.                      ----------------------------------------
  4763.  
  4764.         Function:     sound                                       Utility
  4765.  
  4766.         Synopsis:   turns on the PC speaker at a specified tone frequency
  4767.         Prototype:  (sound freq)
  4768.  
  4769.  
  4770.         ELF Functions                                             page 74
  4771.  
  4772.  
  4773.         Arguments:  freq      <int>               frequency in hertz
  4774.         Returns:
  4775.         Notes:      see beep
  4776.         Example:    (defun play(freq time)
  4777.                       (sound freq) ;;; turn on note
  4778.                       (wait time)  ;;; wait time seconds
  4779.                       (nosound) ;;; turn it off
  4780.                     )
  4781.                     (play 440 0.5);;; sounds middle A for 1/2 second
  4782.  
  4783.                      ----------------------------------------
  4784.  
  4785.         Function:     system                                      Utility
  4786.  
  4787.         Synopsis:   executes a DOS command
  4788.         Prototype:  (system cmd)
  4789.         Arguments:  cmd       <string>            DOS command or program
  4790.         Returns:    <int>     DOS errorlevel if successful or -1 on
  4791.                               error
  4792.         Notes:      You MUST run "cfig386 acad -maxreal FFFFh" to
  4793.                     configure the PharLap DOS extender to allow realmode
  4794.                     programs to run (select a value large enough to run
  4795.                     the desired programs). This function is preferable to
  4796.                     SH or SHELL, or executing some programs from an
  4797.                     ACAD.PGP entry, when the return value must be known.
  4798.                     It's also a little faster.
  4799.         Example:    (keystuff "/FRmyfile\n")
  4800.                     (if(>= (system "123") 0)
  4801.                       (princ "Lotus 123 executed successfully"))
  4802.  
  4803.                      ----------------------------------------
  4804.  
  4805.         Function:     wait                                        Utility
  4806.  
  4807.         Synopsis:   suspend execution for a specified time duration
  4808.         Prototype:  (wait ti)
  4809.         Arguments:  ti        <real>              time in decimal seconds
  4810.         Returns:
  4811.         Notes:
  4812.         Example:    (wait 2.5) ;;; delays for 2.5 seconds
  4813.  
  4814.                      ----------------------------------------
  4815.  
  4816.         Symbols
  4817.         (release 12 or later only)
  4818.  
  4819.         Symbol          Description
  4820.         *last_error*    the last error message string
  4821.         color           default color attribute
  4822.         edit_help       string  list  with  user  defined   help  for  the
  4823.                         (strget) function
  4824.         error_mode      controls  ELF  error  message  display;  1=display
  4825.                         errors,0=no message
  4826.  
  4827.  
  4828.         ELF Functions                                             page 75
  4829.  
  4830.  
  4831.         menu_help       string  list   with  user  defined  help  for  the
  4832.                         (wmenu) function
  4833.  
  4834.  
  4835.         ELF Functions                                             page 76
  4836.  
  4837.  
  4838.         Copyright
  4839.  
  4840.         The ELF program code and  documentation are copyrighted material,
  4841.         registered with  the US Copyright  office and protected  under US
  4842.         and International copyright laws. All rights are reserved.
  4843.  
  4844.  
  4845.         Trademark
  4846.  
  4847.         Mountain Software and  ELF are  trademarks of Mountain  Software.
  4848.         MS-DOS is a registered trademark of Microsoft Corporation. PC-DOS
  4849.         is  a  registered  trademark  of  IBM  Corporation.  AutoCAD  and
  4850.         AutoLISP are registered trademarks of AutoDesk.
  4851.  
  4852.  
  4853.                                       Index
  4854.  
  4855.           *last_error*  . . . . . 73, 74     dragger . . . . .  2, 5, 69-71
  4856.           & . . . . . . . . . . . . . 46     drd . . . . . . . . . . . .  9
  4857.           &&  . . . . . . . . . . . . 46     drename . . . . . . . . . .  7
  4858.           | . . . . . . . . . . .  1, 46     dsd . . . . . . . . . . . . 10
  4859.           ||  . . . . . . . . . . . . 46     dtr . . . . . . . . . . 47, 65
  4860.           acad  3, 4, 6-10, 31, 33, 34,      edit_help . . . . . 54, 57, 74
  4861.                                36-39, 74     elf  1-12, 18, 28, 31, 38-45,
  4862.           acadapp . . . . . . . . . .  3               51, 53, 54, 64, 72-7
  4863.           access  . . 21, 31, 40, 43, 69                              4, 76
  4864.           acos  . . . . . . . . . . . 46     elf.ini . . . . . . . .  4, 73
  4865.           ADS . . . . . . .  3-5, 64, 71     elfapps . . . . . . .  1, 2, 5
  4866.           adsdump . . . . . . . . . . 71     elfdos  . . . . . . .  1, 2, 6
  4867.           arc . . . . . . . . . . . . 65     entity  . . .  1, 2, 10, 64-69
  4868.           asin  . . . . . . . . . . . 47     erasefile . . . . . . . 33, 38
  4869.           attr  11, 13-16, 19, 20, 24, 2     error_mode  . . . . . .  4, 74
  4870.                                6, 27, 56     esc . . . . . .  9, 21, 24, 56
  4871.           attribute  1, 11, 13-16, 18-21     exit  .  9, 23, 24, 56, 57, 72
  4872.                     , 23-27, 33, 34, 36,     exp . . . . . . . . .  1, 3, 5
  4873.                                   56, 74     exsubr  . . . . . . . . . . 10
  4874.           autocad  1-6, 8, 10-12, 67, 69     f1   9, 12, 18, 19, 24, 54, 57
  4875.                                  -72, 76     fclose  . . . . . . . . 40, 43
  4876.           autodesk  . . . . . . .  1, 76     ff  . . . . . . . . . . . .  8
  4877.           autolisp  1-6, 10, 11, 13, 16,     fgetc . . . . . . . . . . . 41
  4878.                      18, 34, 38, 40, 42,     fgetint . . . . . . . . . . 42
  4879.                      43, 45, 51, 53, 62,     fgetlong  . . . . . . . . . 42
  4880.                               64, 71, 76     fgetreal  . . . . . . . . . 42
  4881.           beep  . . . . . . . 11, 72, 74     fgets . . . . . . . . . . . 41
  4882.           binary  . . . . . . . 2, 40-45     field . . . . . 30, 53, 54, 56
  4883.           boundp  . . . . . . . . 34, 60     file_exists . . . . . . . . 33
  4884.           box . . . . . . . . . . . . 13     findfile  . . . . . . . . 3, 8
  4885.           bsearch . . . . . . . . . . 51     findfirst . . . 21, 33, 34, 36
  4886.           capslock  . . . . . . . . . 30     findnext  . . . . . . . 34, 36
  4887.           cd  . . . . . . . . . . . .  6     flipscreen  . . . . . . . . 12
  4888.           ceil  . . . . . . . . . . . 47     floor . . . . . . . . . . . 48
  4889.           chdir . . . . . . . . .  6, 31     floppy  . . . . . .  7, 20, 32
  4890.           chpath  . . . . . . . . . . 32     fopen . . . . . . . . . . . 43
  4891.           circle  . . . . . .  65-67, 69     fputc . . . . . . . . . . . 43
  4892.           clock . . .  2, 56, 60, 71, 72     fputint . . . . . . . . . . 44
  4893.           cls . . . . . . . . . .  6, 13     fputlong  . . . . . . . . . 44
  4894.           color  1, 3, 4, 11, 13-16, 18-     fputreal  . . . . . . . . . 44
  4895.                     21, 23, 24, 25-27, 4     fputs . . . . . . . . . . . 43
  4896.                                6, 56, 74     frewind . . . . . . 40, 44, 45
  4897.           commands  . . .  1-3, 6-10, 69     fseek . . . . . . . . . 40, 45
  4898.           copyfile  . . . . . . . . . 38     fullpath  . . . . . . . 34, 35
  4899.           cosh  . . . . . . . . . . . 47     get_cursor  . . . . . .  15-17
  4900.           dcd . . . . . . . . . . . .  6     get_video . . . . . 13, 14, 16
  4901.           dcopy . . . . . . . . . . 6, 7     getch . . . . . . .  1, 28, 29
  4902.           ddel  . . . . . . . . . . .  7     getche  . . . . . . . .  1, 29
  4903.           ddir  . . . . . . . . . . .  7     getdir  . . . . . . . . . . 35
  4904.           delete  .  2, 7, 9, 51, 56, 57     getdisk . . . . . . . . . . 35
  4905.           derase  . . . . . . . . . .  7     getdiskfree . . . . . . . . 35
  4906.           dir . . . . . 7, 11, 27, 36-38     getkey  . . . . . 1, 28-30, 48
  4907.           dmd . . . . . . . . . . . .  9     getxy . . . . . . . 16, 17, 22
  4908.           dmove . . . . . . . . . . 7, 8     gotoxy  . . . . . . . . 16, 17
  4909.  
  4910.  
  4911.           grid  . . . . . . . . . 65, 66     point . . .  11, 42, 44, 65-70
  4912.           hibyte  . . . . . . . . 29, 48     popup . . . . . . . . . . .  1
  4913.           insert  . . . 2, 30, 51-53, 57     printf  1, 4, 11-14, 16, 26, 3
  4914.           isalnum . . . . . . . . . . 62               4, 54, 55, 56, 60, 7
  4915.           isascii . . . . . . . . 12, 62                                  3
  4916.           iscntl  . . . . . . . . . . 62     prts  . . . . . . . . . . . 14
  4917.           isdigit . . . . . . . . . . 62     puts  . . . . . . . 14, 15, 27
  4918.           isgraph . . . . . . . . . . 63     qsort . . . . . 10, 36, 51, 53
  4919.           islower . . . . . . . . . . 63     radians  11, 46, 47, 49, 50, 6
  4920.           isodigit  . . . . . . . . . 63                              5, 68
  4921.           isprint . . . . . . . . . . 63     rand  . . . . . . . . . 12, 49
  4922.           ispunct . . . . . . . . . . 64     rd  . . . . . . . . . .  9, 10
  4923.           isspace . . . . . . . . . . 64     read_file . . . . . . . 38, 39
  4924.           isupper . . . . . . . . 62, 64     replace . . . . . .  2, 51, 53
  4925.           isxdigit  . . . . . . . . . 64     rmdir . . . . . . . . .  9, 37
  4926.           kbhit . . . . . . . . .  1, 29     round . . . . . . . . . . . 49
  4927.           key_clear . . . . . . . . . 30     rtd . . . . . . . . . . . . 49
  4928.           key_ready . . . . . . . . . 30     save_screen . . . . . . . . 15
  4929.           key_stat  . . . . . . . . . 30     scancode  . . . . . . . 29, 48
  4930.           key_stuff . . . . . 28, 30, 31     scr_fill  . . . . . . . 15, 16
  4931.           keycode  5, 23, 24, 29, 30, 48     scr_printf  . . . . 12, 13, 16
  4932.                                     , 57     sd  . . . . . . . . . . . . 10
  4933.           keycodes  . . . . . . . 29, 56     set_cursor  . . . . . .  15-18
  4934.           keystuff  . . . . . . . . . 74     setdisk . . . . . . . . . . 37
  4935.           last_error  . . . . . . 73, 74     setq  10, 14, 16, 17, 21, 22,
  4936.           len . . . . . .  20, 41, 56-58               24, 25, 29, 30, 34-3
  4937.           lfind . . . . . . . . . . . 52               6, 38, 41, 42, 45, 4
  4938.           line  1, 2, 4, 7, 9, 17-20, 23               6-49, 51, 52, 56, 57
  4939.                     -25, 27, 38-40, 54-5                    , 59, 60, 69-72
  4940.                        7, 65, 66, 67, 69     shareware . . . . . . . . 1, 2
  4941.           list  1, 2, 7, 8, 10-12, 14, 1     sinh  . . . . . . . . . . . 49
  4942.                     7, 18, 22, 23, 24, 2     solid . . . . . . . 25, 67, 68
  4943.                     9, 31, 34-40, 51, 52     sound . . . .  1, 2, 11, 72-74
  4944.                     , 53, 54, 57, 67, 69     splitpath . . . . . . .  36-38
  4945.                         , 71, 72, 74, 75     sprintf . . . . . . 35, 54, 55
  4946.           load_dirs . . . . . 35, 36, 71     srand . . . . . . . . . . . 50
  4947.           load_files  . . . . . . . . 36     ss_diff . . . . . . . . 70, 71
  4948.           lobyte  . . . . . . . . 29, 48     ss_filter . . . . . . . . . 69
  4949.           log10 . . . . . . . . . . . 49     ss_inters . . . . . . . . . 70
  4950.           look  . . . . . . 8-10, 18, 39     ss_move . . . . . . . . 69, 70
  4951.           lsearch . . . . . . . . . . 52     ss_rotate . . . . . . . . . 69
  4952.           lsp  4, 5, 13, 28, 29, 36-38,      ss_scale  . . . . . . . . . 70
  4953.                                       69     ss_union  . . . . . . . . . 70
  4954.           makepath  . . . . . . . . . 36     strchr  . . . . . . . . . . 55
  4955.           md  . . . . . . . . . . . .  9     strcmp  . . . . . . . . . . 55
  4956.           menu_help . . . 18, 19, 24, 75     strcspn . . . . . . . . . . 55
  4957.           mkdir . . . . . . .  9, 36, 37     strdate . . . . . . . . . . 56
  4958.           movefile  . . . . . . . . . 39     strdela . . . . . . . . . . 56
  4959.           nosound . . . . . . . . 73, 74     strget  . . 20, 54, 56, 57, 74
  4960.           numlock . . . . . . . . . . 30     stricmp . . . . . . . . . . 57
  4961.           password  . . . . . . . . .  9     string  1, 2, 4, 11, 12, 14-16
  4962.           pause . . . . . . . . . . . 73               , 18-21, 23, 24, 26-
  4963.           pgdn  . . . . . . . . .  9, 24               41, 43, 51, 52, 53-6
  4964.           pgp . . . . . . . . . . . . 74                    1, 65-68, 73-75
  4965.           pgup  . . . . . . . . .  9, 24     strncpy . . . . . . . . . . 58
  4966.           pharlap . . . . . . . . . . 74     strnset . . . . . . . . . . 58
  4967.  
  4968.  
  4969.           strpbrk . . . . . . . . . . 58
  4970.           strrchr . . . . . . . . . . 58
  4971.           strrev  . . . . . . . . . . 59
  4972.           strspn  . . . . . . . . . . 59
  4973.           strstr  . . . . . . . . 58, 59
  4974.           strswap . . . . . . . . . . 59
  4975.           strtime . . . . . . . . . . 60
  4976.           strtok  . . . . . . . . . . 60
  4977.           strtrim . . . . . . . . 60, 61
  4978.           strtriml  . . . . . . . . . 61
  4979.           strtrimr  . . . . . . . . . 61
  4980.           subr  . . . . . . . . . . . 10
  4981.           substring . . .  54, 55, 58-60
  4982.           substrings  . . . . . . . . 60
  4983.           symbol  1, 2, 4, 6, 10, 11, 13
  4984.                     , 16, 18, 19, 20, 23
  4985.                     , 24, 26, 38, 53, 54
  4986.                     , 56, 57, 71, 73, 74
  4987.           system  1, 4, 12, 18, 31, 33, 
  4988.                           34, 54, 71, 74
  4989.           tan . . . . . . . . . . . . 50
  4990.           tanh  . . . . . . . . . . . 50
  4991.           text  1, 6, 9, 12-16, 18, 20, 
  4992.                     24-27, 38, 39, 54, 5
  4993.                                    6, 68
  4994.           tolower . . . . . . . . . . 61
  4995.           toupper . . . . . . . . . . 61
  4996.           unlink  . . . . . . . . . . 38
  4997.           utility . . . . .  1, 2, 71-74
  4998.           ver . . . . . . . . . . . . 10
  4999.           wait  . . . . . . . . . 24, 74
  5000.           wclose  . . . . . . . . . . 19
  5001.           wcloseall . . . . . . . . . 19
  5002.           wclreol . . . . . . . . . . 19
  5003.           wcls  . . . . . . . . . 19, 20
  5004.           werase_line . . . . . . . . 20
  5005.           wgetdrive . . . . . . . 20, 21
  5006.           wgetfile  . . . . . . .  9, 21
  5007.           wgetstr . . . . . . . . . . 20
  5008.           wgetxy  . . . . . . . . . . 22
  5009.           wgotoxy . . . . . . . . . . 22
  5010.           what  . . . . . . . . . . . 10
  5011.           winfo . . . . . . . . . . . 22
  5012.           wmenu . . . . . 18, 23, 24, 75
  5013.           wmsg  . . . . . . . . . 24, 25
  5014.           wopen . . . . . . . . . . . 25
  5015.           wpopup  . . . . . . 20, 25, 26
  5016.           wprintf . . . . . . . . . . 26
  5017.           wprts . . . . . . . . . 18, 26
  5018.           wputcen . . . . . . . . . . 26
  5019.           wputs . . . . . . . . . 18, 27
  5020.           write_file  . . . . . .  38-40
  5021.           wscroll . . . . . . . . . . 27
  5022.           wshadow . . . . . . . . 27, 28
  5023.           wtitle  . . . . . . . . . . 28
  5024.           xload . . . . . . . . . . .  3
  5025.  
  5026.